我有以下SQL QUERY:
SELECT articles.name,articles.price,users.zipcode FROM articles INNER JOIN users ON users.id = articles.user_id WHERE vectors @@ to_tsquery('crime')ORDER BY articles.price ASC
我想在一个名为Articles(Articles belongs_to user)的ActiveRecord类的find方法中编写它。基本上我想搜索文章并从用户访问zipcode属性(用户has_many文章)
我写了以下版本,但我不确定它是否有效,因为在回复中我没有收到有关用户邮政编码的任何信息。
a = Article.find(:all,:conditions =>“vectors @@ to_tsquery('crime')”,:join =>:user,:order =>:price,:include => :用户)
但我不知道如何访问邮政编码信息。我该如何访问这些信息?这是正确的方法吗?
此致
维克多
答案 0 :(得分:2)
如果你像上面所说的那样结合Articles
和Users
,这应该很简单:
@articles = Article.find(:all, :conditions => "…", :include => :user)
然后,在您看来,您可以这样做:
<ul>
<% for each article in @articles do %>
<li><%= article.user.zipcode %></li>
</ul>
<% end %>
这是有效的,因为Rails为模型中的父对象(User
)创建了一个属性 - 您可以阅读更多关于in the API docs的信息。这甚至可以在没有上面的“include”键的情况下工作,但是将其删除将意味着在循环的每个步骤中进行数据库查询。