Ale*_*. b 1 ruby sql ruby-on-rails simple-form ransack
我有一个模型Task,其范围名为done. ATask属于 aProject且属于 a User。
我需要按用户已完成的项目来过滤用户task。
simple_form_for @q do |form|
form.input :tasks_done_project_id, collection: Project.ordered
Run Code Online (Sandbox Code Playgroud)
但使用“_done”不起作用。
我想到了一个掠夺者:
ransacker :done do |parent|
parent.done.table[:id]
end
Run Code Online (Sandbox Code Playgroud)
但也不起作用。任何想法?
从文档中:
默认情况下,在模型的任何列上都授权搜索和排序,并且没有类方法/范围被列入白名单。
...
Run Code Online (Sandbox Code Playgroud)# `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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4412 次 |
| 最近记录: |