Ruby on rails RubyonRails-如何查询控制器上的模型/条件?

Ruby on rails RubyonRails-如何查询控制器上的模型/条件?,ruby-on-rails,ruby-on-rails-3,arel,named-scope,Ruby On Rails,Ruby On Rails 3,Arel,Named Scope,我正在使用rails 3.2.3,对查询有疑问 我已经读到使用arel而不是命名作用域是有利的 基本上在我的应用程序中,当用户登录时,我希望他看到他创建的产品。 因此,在我的控制器索引中没有: 我在找类似的东西 products=Product.find(:all, :conditions....) 问题是,我的用户和产品模型有一个HABTM关系(必须是这样),我不知道如何连接这些表,以便只显示当前用户插入的产品(插入工作正常) 我是否必须在我的产品模型中添加搜索方法? 或者,这可以通过在索引

我正在使用rails 3.2.3,对查询有疑问

我已经读到使用arel而不是命名作用域是有利的

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

我在找类似的东西

products=Product.find(:all, :conditions....)
问题是,我的用户和产品模型有一个HABTM关系(必须是这样),我不知道如何连接这些表,以便只显示当前用户插入的产品(插入工作正常)

我是否必须在我的产品模型中添加搜索方法? 或者,这可以通过在索引控制器中传递
:条件来实现

基本上逻辑是:

->得到所有的产品

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


我不知道我是否遗漏了什么…有没有关于如何编写代码的提示?我有点困惑。

如果您有关联的用户和产品模型-此代码
@Products=current\u User。Products
将返回
current\u User的产品
以查找当前用户的所有产品,这将起到作用

   current_user.products 
OFCU必须在用户模型中定义关联

has_many :products 

最好不要在控制器中使用
.all
。您可以返回关系:
Product.scoped
。这里的原因是为将来可能使用片段缓存做准备——尽管您从缓存中获取页面内容,但仍然会触发昂贵的DB查询,您不会高兴的。lol,ofc这只是他的代码对话。。。至少他需要对结果进行范围或分页(无论如何,我对你的好评论投了赞成票)
if user_sighed_in?
  @products = current_user.products
else
  @products = Product.scoped
end
has_many :products