我是 RoR 的新手,目前正在使用 rails 3.2 进行练习。我正在开发一个应用程序,例如列出所有产品,但允许用户在注册时过滤并只查看他们喜欢的产品。
我在类别和过滤器下进行了搜索,但不太确定我在寻找什么以及最好的方法是什么。一点指导将不胜感激。
是否有任何具有此功能的教程/railscast?
我是 RoR 的新手,目前正在使用 rails 3.2 进行练习。我正在开发一个应用程序,例如列出所有产品,但允许用户在注册时过滤并只查看他们喜欢的产品。
我在类别和过滤器下进行了搜索,但不太确定我在寻找什么以及最好的方法是什么。一点指导将不胜感激。
是否有任何具有此功能的教程/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)