根据对象的parent_id授权创建操作

时间:2013-09-28 06:55:42

标签: ruby-on-rails cancan

我有User模型以外的两个模型。 HotelRoom

以下是该方案:

hotel :has_many => :rooms

如果将相关联的酒店分配给用户,则用户可以创建房间。如何在create room中实施ability操作的授权,因为hotel_id在房间即将被保存之前是未知的?

我可以在can?下的create action中实施rooms controller方法,但我希望在ability中有这个方法。这个问题应该以{{1​​}}模式解决,但不知何故,我必须在一个单独的控制器(不是嵌套)中创建房间。

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 }