我使用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个房间。 –