1

次の SQL クエリがあります。

SELECT article.name、articles.price、users.zipcode FROM article INNER JOIN users ON users.id = article.user_id WHERE ベクトル @@ to_tsquery('crime') ORDER BY Articles.price ASC

そして、Articles (Articles belongs_to user) という名前の ActiveRecord クラスの find メソッド内にそれを書きたいと思います。基本的に、記事を検索して、ユーザーから郵便番号プロパティにアクセスしたい (ユーザー has_many Articles)

次のバージョンを書きましたが、応答でユーザーの郵便番号に関する情報を受け取っていないため、機能するかどうかはわかりません。

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

しかし、郵便番号情報にアクセスする方法がわかりません。どうすればこの情報にアクセスできますか? これは正しいアプローチですか?

よろしく、

ビクター

4

1 に答える 1

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モデル () 内の親オブジェクト () のプロパティを作成するためArticleです。詳細については、API ドキュメントを参照してください。これは、上記の「include」キーがなくても機能しますが、これを省略すると、ループのすべてのステップでデータベース クエリが発生することになります。

于 2008-11-27T08:17:45.647 に答える