2016-06-02 11 views
0

Ich habe ein Modell Task mit einem Bereich namens done. Ein Task gehört zu einem Project und zu einem User.Ransack Suche durch den Bereich

Ich muss Benutzer nach Projekten filtern, in denen sie eine task getan haben.

simple_form_for @q do |form| 
    form.input :tasks_done_project_id, collection: Project.ordered 

Aber die Verwendung von "_done" funktioniert nicht.

Ich dachte über eine Ransacker:

ransacker :done do |parent| 
    parent.done.table[:id] 
    end 

Aber weder funktioniert nicht. Irgendeine Idee?

Antwort

0

Von the doumentation:

standardmäßig gesucht und auf einer beliebigen Spalte des Modells sind berechtigt, das Sortieren und keine Klassenmethoden/Tive der weißen Liste.

...

# `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 Ihrem Task Modell, müssen Sie explizit den done Umfang weiße Liste:

class Task < ActiveRecord::Base 
    scope :done, -> { ... } 

    def self.ransackable_scopes(auth_object = nil) 
    [:done] 
    end 
end