2012-04-25 14 views
5

Estoy tratando de encontrar una forma de incluir de forma condicional los modelos asociados cuando uso .to_json en un modelo.ActiveRecord to_json: condicionalmente incluye asociaciones

En un ejemplo simplificado, asumir los dos modelos siguientes:

class Foo < ActiveRecord::Base 
    has_many :bars 
end 

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

Actualmente tengo:

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

y esto funciona. Lo que necesito para encontrar una forma de hacerlo es solo incluir instancias de barras que tengan bar_type == 'what?'

Espero que haya una manera de extraer condicionalmente las instancias de barra, o incluso usar un alcance para limitar las barras que se incluyen en la salida json.

Respuesta

3

Si las condiciones no cambian, usted puede hacer esto:

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

enfoque interesante. Voy a intentar esto y contactarte :) – jaydel

Cuestiones relacionadas