class TroleGroups::Storage::BaseMany
autoload :StringMany, 'trole_groups/storage/string_many'
Attributes
Public Class Methods
initializes storage with reference to role subject @param [Object] the role subject (fx a User or UserAccount)
# File lib/trole_groups/storage/base_many.rb, line 12 def initialize rolegroup_subject @rolegroup_subject = rolegroup_subject end
Public Instance Methods
the name of the role field @return [Symbol] the name
# File lib/trole_groups/storage/base_many.rb, line 42 def ds_field_name rolegroup_field end
the current value of the role field @return [Object] the value
# File lib/trole_groups/storage/base_many.rb, line 48 def ds_field_value # puts "#{rolegroup_subject}.#{ds_field_name}" if Troles::Common::Config.log_on? rolegroup_subject.send(ds_field_name) end
name/type of storage @return [Symbol]
# File lib/trole_groups/storage/base_many.rb, line 24 def name :generic end
Attempts to persist the role field changes @return [true, false, error] true if saved, false if no save! method, Error on some error
# File lib/trole_groups/storage/base_many.rb, line 55 def persist_role_changes! puts "TroleGroups::Storage::BaseMany.persist_role_changes!" if Troles::Common::Config.log_on? if !rolegroup_subject.respond_to? :save puts "could not save since no #save method on subject: #{rolegroup_subject}" if Troles::Common::Config.log_on? return false else puts "#{rolegroup_subject}.save" if Troles::Common::Config.log_on? rolegroup_subject.save rolegroup_subject.publish_change :role_groups end end
sets the value of the role field (@trole or @troles) and persists the value (in the data store) @param [Object] the value to set on the role field of the role subject
# File lib/trole_groups/storage/base_many.rb, line 30 def set_ds_field value return if ds_field_value == value if Troles::Common::Config.log_on? puts "TroleGroups::Storage::BaseMany.set_ds_field:" puts "#{rolegroup_subject}.#{ds_field_name} = #{value}" end rolegroup_subject.send(:"#{ds_field_name}=", value) persist_role_changes! end
valid roles of the role subjects class (fx account - i.e the account rules!) @return [Array<Symbol>] the list of valid roles
# File lib/trole_groups/storage/base_many.rb, line 18 def valid_roles rolegroup_subject.class.valid_roles end
Protected Instance Methods
get matching list of Role instances @param [Array<Symbol>] list of role names to find Roles for @return [Array<Role>] references to Role instances
# File lib/trole_groups/storage.rb, line 15 def find_rolegroups *rolegroups rolegroup_model.where(:name => rolegroups.flatten).all end
# File lib/trole_groups/storage/base_many.rb, line 85 def role_list rolegroup_subject.role_list end
# File lib/trole_groups/storage/base_many.rb, line 73 def rolegroup_field trolegroups_config.rolegroup_field end
# File lib/trole_groups/storage/base_many.rb, line 81 def rolegroup_list rolegroup_subject.rolegroup_list end
# File lib/trole_groups/storage/base_many.rb, line 77 def rolegroup_model trolegroups_config.rolegroup_model end
get list of embedded Role instances @param [Array<Symbol>] list of role names @return [Array<Role>] Role instances generated
# File lib/trole_groups/storage.rb, line 22 def rolegroups_to_embed *rolegroups raise "Must be implemented by embed storage to generate a set of rolegroups to embed" end
# File lib/trole_groups/storage/base_many.rb, line 69 def trolegroups_config rolegroup_subject.class.trolegroups_config end