Rails:从一个查询中搜索多个表
如何在find
或paginate
方法中编写条件语句以允许用户同时在Project
和Project Category
名称中进行搜索?
现在我的代码看起来像这样
@projects = Project.paginate :per_page => 20, :page => params[:page], :conditions => ['name LIKE ?', "%#{params[:search]}%"]
所以我还有name
字段的Category
表。 如何在此搜索查询中将这两个name
组合在一起?
假设您的Project
模型has_many :categories
:
@projects = Project.paginate :per_page => 20, :page => params[:page], :joins => :categories, :conditions => ['projects.name LIKE ? OR categories.name LIKE ?', "%#{params[:search]}%", "%#{params[:search]}%"], :order => 'projects.id DESC'
如果/根据需要更改上面的:order
。
我会做:
@categories = Category.find :conditions => ["name like ?", "%#{params[:search]}%"]
连接@projects和@categories,然后将结果用作最终搜索结果列表。