-1

我是 RoR 的新手,目前正在使用 rails 3.2 进行练习。我正在开发一个应用程序,例如列出所有产品,但允许用户在注册时过滤并只查看他们喜欢的产品。

我在类别和过滤器下进行了搜索,但不太确定我在寻找什么以及最好的方法是什么。一点指导将不胜感激。

是否有任何具有此功能的教程/railscast?

4

2 回答 2

0

最好gem 'cancan'用于授权。您可以让用户看到他们喜欢的产品。

您还可以对不同类型的用户进行条件检查。

这里的 git 仓库

另请参阅railscast 剧集以了解康康舞曲的使用

于 2013-08-07T05:39:58.017 回答
0

从 SQL 的角度来看,您应该加入productslikes. 因此,您的查询将如下所示:

SELECT products.*
FROM products
INNER JOIN likes ON product.id = likes.product_id
WHERE likes.user_id = <current_user.id>

将其转移到您查询的 Rails(有joinswhere)将如下所示:

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)
于 2013-08-07T05:47:11.450 回答