1

我正在尝试根据能力过滤索引。我正在使用wice_grid gem 在索引中创建一个表,并向票证添加条件,我们可以使用名为:conditions的东西。

我试图这样说:

@tickets_grid = initialize_grid(Ticket,
                                :include => [:user, :employee_department, :state],
                                :conditions => [Ticket.accessible_by(current_ability)])

但是,这不起作用。我正在寻找任何建议。

更新::conditions正在工作,ActiveRecord所以我想我需要一个查询来查找角色并检测当前的能力

4

2 回答 2

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)

https://github.com/ryanb/cancan/wiki/Fetching-Records

于 2014-10-08T09:00:20.270 回答
0

从您链接到的文档部分:

或者,您可以使用 ActiveRecord::Relation,而不是 Class 对象作为第一个参数:

@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))。但是你应该已经@tickets被 CanCan 初始化了,所以你只需要initialize_grid(@tickets).

于 2013-09-18T14:17:19.843 回答