我是RoR的新手,目前正在使用rails 3.2。我正在开发一个应用程序,例如列出所有产品,但允许用户在注册时过滤并仅查看他们喜欢的产品。
我在类别和过滤器下搜索但不太确定我在寻找什么以及最好的方法是什么。我们将不胜感激。
是否有任何具有此功能的教程/轨道广播?
答案 0 :(得分:0)
答案 1 :(得分:0)
从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)