Module: Roles::ActiveRecord::ClassMethods

Defined in:
lib/roles_active_record/base.rb

Instance Method Summary collapse

Instance Method Details

#strategies_with_role_classObject



26
27
28
# File 'lib/roles_active_record/base.rb', line 26

def strategies_with_role_class
  [:one_role, :many_roles]
end

#strategy(name, options = {}) ⇒ Object

Raises:

  • (ArgumentError)


34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/roles_active_record/base.rb', line 34

def strategy name, options = {}
  strategy_name = name.to_sym
  raise ArgumentError, "Unknown role strategy #{strategy_name}" if !valid_strategies.include? strategy_name
  use_roles_strategy strategy_name
        
  set_role_class(strategy_name, options) if strategies_with_role_class.include? strategy_name

  # one_role reference
  if strategy_name == :one_role
    self.belongs_to :one_role, :foreign_key => 'role_id', :class_name => role_class_name.to_s
  end
  
  # many_roles references
  if strategy_name == :many_roles      
    urc = user_roles_class options
    instance_eval many_roles_stmt(urc)
  end
  
  set_role_strategy name, options
end

#valid_multi_strategiesObject



22
23
24
# File 'lib/roles_active_record/base.rb', line 22

def valid_multi_strategies
  [:many_roles, :roles_mask]
end

#valid_single_strategiesObject



18
19
20
# File 'lib/roles_active_record/base.rb', line 18

def valid_single_strategies
  [:admin_flag, :one_role, :role_string]
end

#valid_strategiesObject



30
31
32
# File 'lib/roles_active_record/base.rb', line 30

def valid_strategies
  valid_single_strategies + valid_multi_strategies
end