ker*_*ion 2 ruby-on-rails has-many where-clause belongs-to rails-activerecord
我有两个模型、产品和生产商。一个生产者可以有很多产品,一个产品属于一个生产者。我现在尝试从搜索查询中获取所有记录,如下所示:
@products = Product.where("name like ? OR product.producer.name like ?", "%#{params[:q]}%", "%#{params[:q]}%")
Run Code Online (Sandbox Code Playgroud)
这应该返回所有product.name或product. Producer.name类似于搜索字符串的产品。有没有短轨路?
您可以执行以下操作:
Product.includes(:producer)
.where('products.name LIKE ? OR producers.name LIKE ?', "%#{params[:q]}%", "%#{params[:q]}%")
Run Code Online (Sandbox Code Playgroud)
您可以用它制作一个范围:
class Product < ActiveRecord::Base
scope :with_name_like, lambda { |name|
includes(:producer).where('products.name LIKE ? OR producers.name LIKE ?', "%#{name}%", "%#{name}%")
}
Run Code Online (Sandbox Code Playgroud)
并像这样使用它:
@products = Product.with_name_like('Chair')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3377 次 |
| 最近记录: |