These cards will be displayed in the SDG homepage. Note there seems to be a strange behavior in cancancan. If we define these rules: can :manage, Widget::Card, page_type: "SDG::Phase" can :manage, Widget::Card The expected behavior is the first rule will always be ignored because the second one overwrites it. However, when creating a new card with `load_and_authorize_resource` will automatically add `page_type: "SDG::Phase"`. Similarly, if we do something like: can :manage, Widget::Card, id: 3 can :manage, Widget::Card Then the new card will have `3` as an ID. Maybe upgrading cancancan solves the issue; we haven't tried it. For now we're defining a different rule when creating widget cards.
14 lines
286 B
Ruby
14 lines
286 B
Ruby
class SDG::Phase < ApplicationRecord
|
|
include Cardable
|
|
enum kind: %w[sensitization planning monitoring]
|
|
validates :kind, presence: true, uniqueness: true
|
|
|
|
def self.[](kind)
|
|
find_by!(kind: kind)
|
|
end
|
|
|
|
def title
|
|
self.class.human_attribute_name("kind.#{kind}")
|
|
end
|
|
end
|