Method: Acl9::ModelExtensions::ClassMethods#acts_as_authorization_role

Defined in:
lib/acl9/model_extensions.rb

#acts_as_authorization_role(options = {}) ⇒ Object

Make a class an auth role class.

You’ll probably never create or use objects of this class directly. Various auth. subject and object methods will do that for you internally.

Examples:

class Role < ActiveRecord::Base
  acts_as_authorization_role
end

Parameters:

  • options (Hash) (defaults to: {})

    the options for tuning

Options Hash (options):

  • :subject_class_name (String) — default: Acl9::config[:default_subject_class_name]

    Subject class name (e.g. ‘User’, or ‘Account)

  • :join_table_name (String) — default: Acl9::config[:default_join_table_name]

    Join table name (e.g. ‘accounts_account_roles’)

See Also:

  • Subject#has_role!
  • Subject#has_role?
  • Subject#has_no_role!
  • Object#accepts_role!
  • Object#accepts_role?
  • Object#accepts_no_role!


126
127
128
129
130
131
132
133
134
135
136
# File 'lib/acl9/model_extensions.rb', line 126

def acts_as_authorization_role(options = {})
  subject = options[:subject_class_name] || Acl9::config[:default_subject_class_name]
  join_table = options[:join_table_name] || Acl9::config[:default_join_table_name] ||
               join_table_name(undecorated_table_name(self.to_s), undecorated_table_name(subject))

  has_and_belongs_to_many subject.demodulize.tableize.to_sym,
    :class_name => subject,
    :join_table => join_table

  belongs_to :authorizable, :polymorphic => true
end