I have a model Task
with a scope named done
.
A Task
belongs to a Project
and to a User
.
I need to filter users by projects in which they have a done task
.
simple_form_for @q do |form|
form.input :tasks_done_project_id, collection: Project.ordered
But using "_done" doesn't work.
I thought about a ransacker:
ransacker :done do |parent|
parent.done.table[:id]
end
But doesn't work neither. Any Idea?
From the documentation:
By default, searching and sorting are authorized on any column of your model and no class methods/scopes are whitelisted.
...
# `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
In your Task
model, you must explicitly whitelist the done
scope:
class Task < ActiveRecord::Base
scope :done, -> { ... }
def self.ransackable_scopes(auth_object = nil)
[:done]
end
end