Files
grecia/app/models/sdg/phase.rb
Javi Martín 7aee4f6241 Add SDG phases cards management
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.
2021-01-14 17:40:02 +01:00

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