2013-09-28 44 views
1

我有除User模型以外的兩個模型。 HotelRoom根據對象的parent_id授權創建操作

下面是這種情況:

hotel :has_many => :rooms 

如果相關酒店被分配給用戶,用戶可以創建房間。我如何才能在ability中執行create room操作的授權,因爲hotel_id是未知的,直到房間將被保存?

我可以在create actionrooms controller下執行can?方法,但我期待在ability中有。這個問題應該在nested_resources模式中解決,但不知何故,我必須在一個單獨的控制器(不嵌套)中創建房間。

回答

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 } 
+0

是的!正如我在文章中提到,使用嵌套的資源,我們可以做到這一點。由於我必須使用單獨的控制器,因此我使用了第二種方法。這是我已經授權檢查控制器。我期望通過能力模塊可以進行管理。我想這是沒有辦法的 – Muntasim

+0

我已經更新了在Ability.rb文件中執行此類功能的標準方式 –