Rails unir tabelas
-
11-07-2019 - |
Pergunta
Eu tenho um SQL seguinte consulta:
articles.name SELECT, articles.price, users.zipcode dos artigos INNER JOIN usuários ON users.id = articles.user_id ONDE vetores @@ to_tsquery ( 'crime') ORDER BY ASC articles.price
E eu gostaria de escrevê-lo dentro de um método find a partir de um dos artigos ActiveRecord classe chamada (Artigos belongs_to usuário). Basicamente eu quero procurar artigos e acessar o propertie CEP do usuário (user has_many artigos)
Eu escrevi a seguinte versão, mas não tenho certeza de que o seu trabalho, porque na resposta eu não receber qualquer informação sobre o CEP do usuário.
a = Article.find (: all,: conditions => "vetores @@ to_tsquery ( 'crime')" ,: junta =>: usuário,: ??order =>: preço,: incluir =>: user)
Mas eu não tenho nenhuma idéia de como acessar as informações de CEP. como posso aceder a esta informação? esta é a abordagem correta?
Saudações,
Victor
Solução
Se você acoplada Articles
e Users
como você disse acima, este deve ser muito fácil:
@articles = Article.find(:all, :conditions => "…", :include => :user)
Então, na sua opinião, você pode fazer:
<ul>
<% for each article in @articles do %>
<li><%= article.user.zipcode %></li>
</ul>
<% end %>
Isso funciona porque Rails cria uma propriedade para o objeto pai (User
) no modelo (Article
) - você pode ler mais sobre o que na API docs . Isso funciona mesmo sem a chave "incluem" acima, mas deixando-o para fora significaria uma consulta de banco de dados em cada etapa do ciclo.