2010-10-04 29 views
5

Tengo 2 asociaciones polimórficas a través de las cuales necesito consultar.¿Cómo unirse a tablas polimórficas en una consulta?

Tengo una tabla news_article que tiene una asociación polimórfica a los equipos, jugadores, etc. Esos equipos, jugadores, etc tienen una asociación polimórfica a través de fotos phototenic.

Tengo que encontrar todos los artículos que tienen al menos una imagen que es 500 píxeles de ancho.

El artículo modelo que tengo un has_many: equipos (a través de la mesa polimórfica) y en los equipos que tienen una has_many: fotos (aunque otra mesa polimórfica)

pensé que podría utilizar une como esto

Article.find (: pasado,: une => {: => Equipos: fotos},: condiciones => "photos.aspect_ratio < 1,55 y photos.aspect_ratio> 1.30")

pero no está funcionando . ¿Algunas ideas?

+0

Se puede publicar el error que está recibiendo? – nfm

+0

simplemente se cuelga. el registro dice 'mostrar campos' de la tabla de artículos, pero eso es todo. – tesserakt

+0

¿Puedes publicar tus modelos? –

Respuesta

2

Esperamos que este sea su configuración ...

class Article < ActiveRecord::Base 
    has_many :teams 
end 

class Team < ActiveRecord::Base 
    has_many :photos 
end 

class Photo < ActiveRecord::Base 
    belongs_to :teams 
end 

Puede usar th ¿Sigue la consulta y avísenos si le funciona?

Article.find(:last, :include => {:teams => :photos}, :conditions => "photos.aspect_ratio < 1.55 AND photos.aspect_ratio > 1.30") 

creo que sirve ...

rgds, Sourcebits equipo

+0

que funcionó, no sé por qué el otro no lo hizo. – tesserakt

+0

En realidad, las uniones también funcionan. No sé por qué no fue antes ... – tesserakt

2

Si está utilizando Rails 3: ya

Article.joins(:teams).where(condition).joins(:photos).where(condition) 

Si está utilizando rieles 2.3.8:

Article.find(:all, :include => {:teams => :photos}, :conditions => [YOUR CONDITIONS]) 

creo que sirve ...

Cuestiones relacionadas