私はRoRを初めて使用し、現在Rails 3.2で練習しています。たとえば、すべての製品を一覧表示するが、サインアップ時にユーザーが好きな製品だけをフィルタリングして表示できるようにするアプリの開発に取り組んでいます。
カテゴリとフィルターで検索しましたが、何を探しているのか、何が最善の方法なのかよくわかりません。少しのガイダンスをいただければ幸いです。
この機能を備えたチュートリアル/レールキャストはありますか?
私はRoRを初めて使用し、現在Rails 3.2で練習しています。たとえば、すべての製品を一覧表示するが、サインアップ時にユーザーが好きな製品だけをフィルタリングして表示できるようにするアプリの開発に取り組んでいます。
カテゴリとフィルターで検索しましたが、何を探しているのか、何が最善の方法なのかよくわかりません。少しのガイダンスをいただければ幸いです。
この機能を備えたチュートリアル/レールキャストはありますか?
gem 'cancan'
承認に使用するのに最適です。ユーザーが好きな製品を表示できるようにすることができます。
さまざまなタイプのユーザーに対して条件付きチェックを行うこともできます。
gitリポジトリはこちら
cancan の使用方法についてはRailscast のエピソードも参照してください。
SQL の観点からは、 と を結合する必要がproducts
ありlikes
ます。したがって、クエリは次のようになります。
SELECT products.*
FROM products
INNER JOIN likes ON product.id = likes.product_id
WHERE likes.user_id = <current_user.id>
それを Rails にシフトすると ( joinsとwhere があります)、クエリは次のようになります。
Product.joins('INNER JOIN likes ON product.id = likes.product_id').
where('likes.user_id = ?', current_user.id)
products
と の間に関係があると思いますlikes
:
class Product < ActiveRecord::Base
has_many :likes
end
class Like < ActiveRecord::Base
belongs_to :product
end
単純化するjoin
と、クエリは次のようになります。
Product.joins(:likes).where('likes.user_id = ?', current_user.id)