Pregunta

Tengo una siguiente CONSULTA SQL:

SELECCIONAR artículos.nombre, artículos.precio, usuarios.zipcode DESDE artículos INTERIORES ÚNASE a usuarios EN users.id = articles.user_id DONDE vectors @@ to_tsquery ('crime') ORDENAR por articles.price ASC

Y me gustaría escribirlo dentro de un método de búsqueda de una clase de ActiveRecord llamada Artículos (Artículos pertenece al usuario). Básicamente, quiero buscar artículos y acceder a la propiedad del código postal del usuario (usuario has_many artículos)

Escribí la siguiente versión, pero no estoy seguro de que funcione porque en la respuesta no recibo ninguna información sobre el código postal del usuario.

a = Article.find (: all,: condition = > " vectors @@ to_tsquery ('crime') ",: join = >: user,: order = >: price,: include = >: usuario)

Pero no tengo idea de cómo acceder a la información del código postal. ¿Cómo puedo acceder a esta información? este es el enfoque correcto?

Saludos,

Victor

¿Fue útil?

Solución

Si ha acoplado Artículos y Usuarios como dice anteriormente, esto debería ser bastante fácil:

@articles = Article.find(:all, :conditions => "…", :include => :user)

Luego, en su opinión, puede hacer:

<ul>
<% for each article in @articles do %>
  <li><%= article.user.zipcode %></li>
</ul>
<% end %>

Esto funciona porque Rails crea una propiedad para el objeto principal ( Usuario ) en el modelo ( Artículo ). Puede leer más sobre eso en los documentos de la API . Esto incluso funciona sin el " include " clave anterior, pero dejarlo fuera significaría una consulta a la base de datos en cada paso del ciclo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top