1

Rails 3.2.3を使用していますが、クエリについて質問があります。

名前付きスコープの代わりにarelを使用する方が有利であることを読みました。

基本的に私のアプリでは、ユーザーがログインしたときに、彼が作成した製品を表示してもらいたいと思います。したがって、コントローラにインデックスを付ける代わりに:

products=Product.find(:all)

私は次のようなものを探していました

products=Product.find(:all, :conditions....)

問題は、私のユーザーモデルと製品モデルにはHABTM関係があり(実際にはそうである必要があります)、によって挿入された製品のみcurrent_userが表示されるようにこれらのテーブルを結合する方法がわかりません(挿入は正しく機能しています)

製品モデルに検索メソッドを追加する必要がありますか?:conditionsまたは、これはインデックスコントローラーを渡すことで実現できますか?

基本的にロジックは次のとおりです。

->すべての製品を入手

-> products_users HABTMテーブルと内部結合し、products_users.user_id=current_user.idであるすべての製品を取得します。結果を返します。

ここで何かが足りないかどうかわかりません...これをコーディングするためのヒントはありますか?ちょっと混乱しています。

4

3 に答える 3

1

ユーザーモデルと製品モデルを関連付けている場合、このコード@products = current_user.productsはの製品を返しますcurrent_user

于 2012-05-24T12:26:53.330 に答える
1

現在のユーザーのすべての製品を見つけるために、これはトリックを行います

   current_user.products 
于 2012-05-24T12:27:35.130 に答える
1
if user_sighed_in?
  @products = current_user.products
else
  @products = Product.scoped
end

多くの場合、ユーザーモデルで関連付けを定義する必要があります

has_many :products 
于 2012-05-24T12:29:47.220 に答える