Ruby on rails RubyonRails-如何查询控制器上的模型/条件?
我正在使用rails 3.2.3,对查询有疑问 我已经读到使用arel而不是命名作用域是有利的 基本上在我的应用程序中,当用户登录时,我希望他看到他创建的产品。 因此,在我的控制器索引中没有: 我在找类似的东西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关系(必须是这样),我不知道如何连接这些表,以便只显示当前用户插入的产品(插入工作正常) 我是否必须在我的产品模型中添加搜索方法? 或者,这可以通过在索引
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