2008-11-27 55 views
1

我有以下SQL查詢:Rails的連接表

SELECT articles.name,articles.price,users.zipcode從文章的INNER JOIN用戶ON users.id = articles.user_id對於向量@@ to_tsquery(「犯罪')ORDER BY articles.price ASC

我想寫一個名爲Articles(Articles belongs_to user)的ActiveRecord類的find方法。基本上我想要搜索的文章和訪問用戶的郵政編碼屬性(用戶has_many文章)

我寫了以下版本,但我不知道它的工作,因爲在響應我沒有收到任何有關用戶的信息郵政編碼。 (:all,:conditions =>「vectors @@ to_tsquery('crime')」,:joins =>:user,:order =>:price,:include =>:user)

但我不知道如何訪問郵編信息。我怎樣才能訪問這些信息?這是正確的方法?

問候,

維克多

回答

2

如果你再加ArticlesUsers像你上面說的,這應該是很容易的:

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

然後,在你看來,你可以做:

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

這是有效的,因爲Rails創建模型(Article)中父對象的屬性(User) - 您可以閱讀更多關於in the API docs的信息。這甚至在沒有上面的「包含」鍵的情況下工作,但是將其留在外面意味着在循環的每個步驟中的數據庫查詢。

+0

謝謝,我想我真的很困。我之前嘗試過這種方式,並沒有工作,但現在正在工作:-) – 2008-11-27 10:45:13