1

我正在使用 rails 3.2.3 并且对查询有疑问。

我读过使用 arel 而不是命名范围是有利的。

基本上在我的应用程序中,当用户登录时,我希望他看到他创建的产品。所以不要在我的控制器索引中:

products=Product.find(:all)

我一直在寻找类似的东西

products=Product.find(:all, :conditions....)

问题是,我的 User 和 Product 模型有一个 HABTM 关系(它确实必须是),我不知道如何加入这些表,以便只current_user显示插入的产品(插入工作正常)

我必须在我的产品模型中添加搜索方法吗?或者这可以通过传入:conditions索引控制器来完成?

基本上逻辑是:

->获取所有产品

-> 与 products_users HABTM 表内联,并获取 products_users.user_id = current_user.id 的所有产品。返回结果。

我不知道我是否在这里遗漏了什么......关于如何编码的任何提示?我有点困惑。

4

3 回答 3

1

如果您有关联的用户和产品模型 - 此代码@products = current_user.products将返回current_user.

于 2012-05-24T12:26:53.330 回答
1

要找到当前用户的所有产品,这将起到作用

   current_user.products 
于 2012-05-24T12:27:35.130 回答
1
if user_sighed_in?
  @products = current_user.products
else
  @products = Product.scoped
end

ofc 你必须在用户模型中定义关联

has_many :products 
于 2012-05-24T12:29:47.220 回答