Module: RoleFu::Resourceable::ClassMethods
- Defined in:
- lib/role_fu/resourceable.rb
Instance Method Summary collapse
- #find_roles(role_name = nil, user = nil) ⇒ Object
-
#role_fu_alias(name) ⇒ Object
Dynamically create aliases for role methods.
- #with_role(role_name, user = nil) ⇒ Object
- #without_role(role_name, user = nil) ⇒ Object
Instance Method Details
#find_roles(role_name = nil, user = nil) ⇒ Object
20 21 22 23 24 25 |
# File 'lib/role_fu/resourceable.rb', line 20 def find_roles(role_name = nil, user = nil) query = RoleFu.role_class.where(resource_type: name) query = query.where(name: role_name.to_s) if role_name query = query.joins(:users).where(RoleFu.user_class.table_name => {id: user.id}) if user query end |
#role_fu_alias(name) ⇒ Object
Dynamically create aliases for role methods
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/role_fu/resourceable.rb', line 40 def role_fu_alias(name) singular = name.to_s.singularize plural = name.to_s.pluralize # Class methods singleton_class.class_eval do alias_method "find_#{plural}", :find_roles alias_method "with_#{singular}", :with_role alias_method "without_#{singular}", :without_role end # Instance methods alias_method "users_with_#{singular}", :users_with_role alias_method "users_with_any_#{singular}", :users_with_any_role alias_method "users_with_all_#{plural}", :users_with_all_roles alias_method "users_with_#{plural}", :users_with_roles alias_method "users_grouped_by_#{singular}", :users_grouped_by_role alias_method "available_#{plural}", :available_roles alias_method "applied_#{plural}", :applied_roles alias_method "has_#{singular}?", :has_role? alias_method "count_users_with_#{singular}", :count_users_with_role alias_method "user_has_#{singular}?", :user_has_role? alias_method "add_#{singular}_to_user", :add_role_to_user alias_method "remove_#{singular}_from_user", :remove_role_from_user alias_method "destroy_#{singular}", :destroy_role end |
#with_role(role_name, user = nil) ⇒ Object
27 28 29 30 31 32 |
# File 'lib/role_fu/resourceable.rb', line 27 def with_role(role_name, user = nil) role_table = RoleFu.role_class.table_name query = joins(:roles).where(role_table => {name: role_name.to_s}) query = query.joins(roles: :users).where(RoleFu.user_class.table_name => {id: user.id}) if user query.distinct end |
#without_role(role_name, user = nil) ⇒ Object
34 35 36 |
# File 'lib/role_fu/resourceable.rb', line 34 def without_role(role_name, user = nil) where.not(id: with_role(role_name, user).select(:id)) end |