1

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

这是场景:

hotel :has_many => :rooms

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

我可以在 中实现一个方法can?,但我希望在. 这个问题应该以模式解决,但不知何故我必须在单独的控制器(不是嵌套的)中创建房间。create actionrooms controllerabilitynested_resources

4

1 回答 1

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 }
于 2013-09-28T15:10:19.057 回答