我使用Cancancan設置管理能力。我是這樣一個聯合體,其中一個房間Cancancan通過能力檢查傳遞一個對象
has_one :group, through: :property
我知道,一個人不能使用通過傳遞cancancan的對象,但我們可以通過使用哈希檢查能力。
#ability.rb
if user.has_role?(:admin)
can :manage, Room, :group => { :id => user.group_id }
end
當我加載我的索引,顯示,更新,編輯和刪除的方法的上述能力檢查工作,但是當我加載新的方法或創建方法不起作用。 我知道Cancancan會傳遞任何條件作爲散列,如this,但我不認爲它傳遞了我的散列,因爲組是作爲關聯而不是每個房間對象上的列設置的。
#rooms_controller.rb
class RoomsController < ApplicationController
load_and_authorize_resource
def new
@room = Room.new
end
end
我的問題是,我怎麼能檢查新的這種能力和創建方法,最好不添加新列到我的對象。
任何幫助表示讚賞
感謝
你什麼時候設置房間屬於哪個組? – Arjan
它通過創建屬性進行設置。每組有大約6個物業,每個物業大約有10個房間。 –