class TroleGroups::Storage::BaseMany

autoload :StringMany, 'trole_groups/storage/string_many'

Attributes

rolegroup_subject[R]

Public Class Methods

new(rolegroup_subject) click to toggle source

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

ds_field_name() click to toggle source

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
ds_field_value() click to toggle source

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() click to toggle source

name/type of storage @return [Symbol]

# File lib/trole_groups/storage/base_many.rb, line 24
def name
  :generic
end
persist_role_changes!() click to toggle source

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
set_ds_field(value) click to toggle source

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() click to toggle source

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

find_rolegroups(*rolegroups) click to toggle source

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
role_list() click to toggle source
# File lib/trole_groups/storage/base_many.rb, line 85
def role_list
  rolegroup_subject.role_list
end
rolegroup_field() click to toggle source
# File lib/trole_groups/storage/base_many.rb, line 73
def rolegroup_field      
  trolegroups_config.rolegroup_field
end
rolegroup_list() click to toggle source
# File lib/trole_groups/storage/base_many.rb, line 81
def rolegroup_list
  rolegroup_subject.rolegroup_list
end
rolegroup_model() click to toggle source
# File lib/trole_groups/storage/base_many.rb, line 77
def rolegroup_model
  trolegroups_config.rolegroup_model
end
rolegroups_to_embed(*rolegroups) click to toggle source

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
trolegroups_config() click to toggle source
# File lib/trole_groups/storage/base_many.rb, line 69
def trolegroups_config
  rolegroup_subject.class.trolegroups_config
end