2012-04-25 15 views
5

Sto cercando di trovare un modo per includere condizionatamente modelli associati quando uso .to_json su un modello.ActiveRecord to_json: include condizionalmente le associazioni

In un esempio semplificato, assumere i seguenti due modelli:

class Foo < ActiveRecord::Base 
    has_many :bars 
end 

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

attualmente ho:

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

e questo funziona. Quello di cui ho bisogno per trovare un modo per fare è includere solo istanze di barre che hanno bar_type == 'cosa?'

Spero che ci sia un modo per tirare condizionatamente le istanze della barra, o forse anche usare un oscilloscopio per limitare le barre incluse nell'output di JSON.

risposta

3

Se le condizioni non cambiano, si potrebbe fare questo:

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

approccio interessante. Darò questa prova e tornerò da te :) – jaydel

Problemi correlati