我正在尝试根据能力过滤索引。我使用wice_grid gem在索引中创建表,并为票证添加条件,我们可以使用名为:conditions的东西。
我试图这样说:
@tickets_grid = initialize_grid(Ticket,
:include => [:user, :employee_department, :state],
:conditions => [Ticket.accessible_by(current_ability)])
但是,这不起作用。我正在寻找任何建议。
更新::conditions
的工作方式与ActiveRecord
类似,所以我想我需要一个查询来查找角色并检测当前的能力
答案 0 :(得分:1)
您正在寻找的是current_ability.model_adapter(Ticket,:index).conditions,其中Ticket是您的模型,并且:index是您的访问类型。
所以在你的情况下它应该是:
@tickets_grid = initialize_grid(Ticket,:include => [:user, :employee_department, :state],:conditions => current_ability.model_adapter(Ticket, :index).conditions)
答案 1 :(得分:0)
从您链接到的文档部分:
或者,您可以代替Class对象作为第一个参数 可以使用ActiveRecord :: Relation:
@tasks_grid = initialize_grid(Task.where(:archived => false, :projects => {:active => true}).joins(:project) )
Ticket.accessible_by(current_ability)
是一种关系,而不是条件的哈希,所以你会initialize_grid(Ticket.accessible_by(current_ability))
。但是,您应该已经由CanCan初始化@tickets
,因此您只需要initialize_grid(@tickets)
。