Skip to content

Commit

Permalink
Fixed be9#42 for acts_as_authorization_object
Browse files Browse the repository at this point in the history
  • Loading branch information
matadon committed Mar 22, 2012
1 parent 782de8c commit 8d0a89b
Showing 1 changed file with 20 additions and 13 deletions.
33 changes: 20 additions & 13 deletions lib/acl9/model_extensions.rb
Expand Up @@ -33,10 +33,9 @@ module ClassMethods
# @see Acl9::ModelExtensions::Subject
#
def acts_as_authorization_subject(options = {})
assoc = options[:association_name] || Acl9::config[:default_association_name]
assoc = options[:association_name] || Acl9::config[:default_association_name]
role = options[:role_class_name] || Acl9::config[:default_role_class_name]
join_table = options[:join_table_name] || Acl9::config[:default_join_table_name] ||
self.table_name_prefix + [undecorated_table_name(self.to_s), undecorated_table_name(role)].sort.join("_") + self.table_name_suffix
join_table = options[:join_table_name] || Acl9::config[:default_join_table_name] || self.table_name_prefix + [undecorated_table_name(self.to_s), undecorated_table_name(role)].sort.join("_") + self.table_name_suffix

has_and_belongs_to_many assoc, :class_name => role, :join_table => join_table

Expand Down Expand Up @@ -79,7 +78,15 @@ def acts_as_authorization_object(options = {})
role = options[:role_class_name] || Acl9::config[:default_role_class_name]
role_table = role.constantize.table_name

join_table = options[:join_table_name] || ActiveRecord::Base.send(:join_table_name, role_table, subj_table)
join_table = options[:join_table_name]
join_table ||= ActiveRecord::Base.send(:join_table_name,
role_table, subj_table) if ActiveRecord::Base.private_methods \
.include?('join_table_name')
join_table ||= Acl9::config[:default_join_table_name]
join_table ||= self.table_name_prefix \
+ [undecorated_table_name(self.to_s),
undecorated_table_name(role)].sort.join("_") \
+ self.table_name_suffix

sql_tables = <<-EOS
FROM #{subj_table}
Expand Down Expand Up @@ -126,17 +133,17 @@ def acts_as_authorization_object(options = {})
# @see Acl9::ModelExtensions::Object#accepts_role?
# @see Acl9::ModelExtensions::Object#accepts_no_role!
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] ||
self.table_name_prefix + [undecorated_table_name(self.to_s), undecorated_table_name(subject)].sort.join("_") + self.table_name_suffix
# comment out use deprecated API
#join_table_name(undecorated_table_name(self.to_s), undecorated_table_name(subject))
subject = options[:subject_class_name] || Acl9::config[:default_subject_class_name]
join_table = options[:join_table_name] || Acl9::config[:default_join_table_name] ||
self.table_name_prefix + [undecorated_table_name(self.to_s), undecorated_table_name(subject)].sort.join("_") + self.table_name_suffix
# comment out use deprecated API
#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
has_and_belongs_to_many subject.demodulize.tableize.to_sym,
:class_name => subject,
:join_table => join_table

belongs_to :authorizable, :polymorphic => true
belongs_to :authorizable, :polymorphic => true
end
end
end
Expand Down

0 comments on commit 8d0a89b

Please sign in to comment.