Rails2.3で、ItemとRelevantという2つのモデルを使い、商品レコメンド機能を実装します。レコメンドは、両方のItemを購入しているユーザ数が多いパターンを上位から10件の表示とします。


▼itemsテーブル設定
t.string :name #item名

▼relevantsテーブル設定
t.integer :from_id #基準となるItem.id
t.integer :to_id #レコメンドするItem.id
t.integer :counter #両方のItemを購入しているユーザ数

▼items_controller.rb内
def show
@item = Item.find(params[:id])
@counters = Relevant.find_by_sql(["select * from relevants inner join items where relevants.to_id = items.id and relevants.from_id = ? order by relevants.counter desc limit 10", @item])
end

▼show.html.erb内
<% @counters.each do |counter| -%>
・<%=link_to h(counter.name), {:action => :show, :id => counter} %></>(<%=h counter.counter %>人)</br>
<% end -%>

上記でやりたいことは実現したのですが、モデルに関連性定義をして「Rails的に」実現したいです。どなたか方法を教えてください。

回答の条件
  • 1人2回まで
  • 登録:2009/12/01 02:16:26
  • 終了:2009/12/08 02:20:02

回答(1件)

id:IlO10l0Il No.1

IlO10l0Il回答回数1757ベストアンサー獲得回数812009/12/02 17:21:21

http://blog.y-110.net/log/eid130.html

こちらが参考になると思います。

id:gets_itai

↑わざとですか? 勘弁してください

2009/12/03 21:07:03
  • id:gets_itai
    設問文中に、誤りがありましたので、前回の質問をキャンセルしました。修正内容は;

    ▼items_controller.rb内
    ◎ @item = Item.find(params[:id])
    × @item = Favorite.find(params[:id])

    の部分です。調査されていた方がいらっしゃいましたら、申し訳ありませんでした。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません