我有User
模型以外的两个模型。 Hotel
和Room
。
以下是该方案:
hotel :has_many => :rooms
如果将相关联的酒店分配给用户,则用户可以创建房间。如何在create room
中实施ability
操作的授权,因为hotel_id
在房间即将被保存之前是未知的?
我可以在can?
下的create action
中实施rooms controller
方法,但我希望在ability
中有这个方法。这个问题应该以{{1}}模式解决,但不知何故,我必须在一个单独的控制器(不是嵌套)中创建房间。
答案 0 :(得分:1)
您可以使用此处概述的nested_resources
工具:https://github.com/ryanb/cancan/wiki/Nested-Resources 但仅使用此处列出的特定操作授权方法为单独控制器的特定创建操作设置此项:https://github.com/ryanb/cancan/wiki/authorizing-controller-actions
编辑 - 根据评论中的要求更新了ability.rb的示例:
can :create, Room, :hotel => { :user_id => user.id }