Files
fizzy/app/models/user/role.rb
T
David Heinemeier Hansson 8e479dddba Clearer still
2025-04-15 16:04:11 +02:00

25 lines
507 B
Ruby

module User::Role
extend ActiveSupport::Concern
included do
enum :role, %i[ admin member system ].index_by(&:itself), scopes: false
scope :member, -> { where(role: :member) }
scope :active, -> { where(active: true, role: %i[ admin member ]) }
end
class_methods do
def system
find_or_create_by!(role: :system) { it.name = "System" }
end
end
def can_change?(other)
admin? || other == self
end
def can_administer?(other)
admin? && other != self
end
end