module WithRole::ActiveRecord
Public Instance Methods
remove_role!()
click to toggle source
# File lib/with_role/active_record.rb, line 38 def remove_role! self.role = nil save end
set_role(new_role)
click to toggle source
Set role of a resource. Make sure role is listed in config/initializers/with_role.rb
Example¶ ↑
user.set_role(:admin)
# File lib/with_role/active_record.rb, line 26 def set_role(new_role) available_roles = ::WithRole.configuration[:available_roles].map(&:downcase) new_role = new_role.to_s.downcase if available_roles.exclude?(new_role) raise "Not a valid role!. Available roles are #{available_roles.join(",")}" end self.role = new_role save end
with_role(**options)
click to toggle source
Abling models to have the role feature
Usage¶ ↑
class User < ActiveRecord::Base
with_role
end
# File lib/with_role/active_record.rb, line 18 def with_role(**options) class_eval do # Set role of a resource. # Make sure role is listed in config/initializers/with_role.rb # === Example # # user.set_role(:admin) # def set_role(new_role) available_roles = ::WithRole.configuration[:available_roles].map(&:downcase) new_role = new_role.to_s.downcase if available_roles.exclude?(new_role) raise "Not a valid role!. Available roles are #{available_roles.join(",")}" end self.role = new_role save end def remove_role! self.role = nil save end # Define role checkers # === Examples # # user.admin_role? # ::WithRole.configuration[:available_roles].each do |role_name| define_method "#{role_name}_role?" do self.role == role_name.downcase end end end end