2012-04-25 6 views
5

Ich versuche eine Möglichkeit zu finden, zugeordnete Modelle bedingt zu verwenden, wenn ich .to_json in einem Modell verwende.ActiveRecord to_json: Bedingte Include-Verknüpfungen

In einem vereinfachten Beispiel sei angenommen, die beiden folgenden Modelle:

class Foo < ActiveRecord::Base 
    has_many :bars 
end 

class Bar < ActiveRecord::Base 
    belongs_to :foo 
    attr_accessible :bar_type 
end 

Ich habe derzeit:

f = Foo.find "3" 
j = f.to_json(:include => { :bars => {:some, :attributes}} 

und das funktioniert. Was ich tun muss, ist nur Bar-Instanzen mit bar_type == "what?"

Ich hoffe, dass es eine Möglichkeit gibt, die Balkeninstanzen bedingt zu ziehen oder vielleicht sogar einen Bereich zu verwenden, um die Balken zu begrenzen, die in der json-Ausgabe enthalten sind.

Antwort

3

Verwendung Wenn die Bedingungen nicht ändern, können Sie dies tun:

class Foo < ActiveRecord::Base 
    has_many :bars 
    has_many :what_bars, :class_name=>"Bar", 
         :foreign_key=>:foo_id, 
         :conditions=>"bars.bar_type = 'what'" 
end 

f = Foo.find "3" 
j = f.to_json(:include => :what_bars) 
+0

Interessanter Ansatz. Ich werde es versuchen und zurück zu dir :) – jaydel