我有一个模型Task
,其范围名为done
。
Task
属于Project
和User
。
我需要按照已完成task
的项目来过滤用户。
simple_form_for @q do |form|
form.input :tasks_done_project_id, collection: Project.ordered
但使用“_done”不起作用。
我想到了一个洗劫者:
ransacker :done do |parent|
parent.done.table[:id]
end
但两种情况都不起作用。有什么想法吗?
答案 0 :(得分:0)
默认情况下,在模型的任何列上授权搜索和排序,并且不会将类方法/范围列入白名单。
...
# `ransackable_scopes` by default returns an empty array # i.e. no class methods/scopes are authorized. # For overriding with a whitelist array of *symbols*. # def ransackable_scopes(auth_object = nil) [] end
在Task
模型中,您必须明确将done
范围列入白名单:
class Task < ActiveRecord::Base
scope :done, -> { ... }
def self.ransackable_scopes(auth_object = nil)
[:done]
end
end