Files
nairobi/app/controllers/sdg_management/cards_controller.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
374 B
Ruby

class SDGManagement::CardsController < SDGManagement::BaseController
include Admin::Widget::CardsActions
helper_method :index_path
load_and_authorize_resource :phase, class: "SDG::Phase", id_param: "sdg_phase_id"
load_and_authorize_resource :card, through: :phase, class: "Widget::Card"
private
def index_path
sdg_management_homepage_path
end
end