【发布时间】:2017-06-14 22:49:21
【问题描述】:
我的 Ruby on Rails 5 (PostGres 9.5) 应用程序中有两个模型。我有
class Machine < ActiveRecord::Base
has_many :parts
和
class Part < ActiveRecord::Base
belongs_to :machine
我想搜索机器对象,所以我有
@results = Machine.where("name ILIKE ?", "%#{machine_name}%")
.order("LOWER(name)")
.paginate(:page => params[:page])
但需要注意的是,我只想返回至少有一个 Part 对象与之关联的对象。我意识到我可以做到
@results = Machine.joins(:parts)
.where("name ILIKE ?", "%#{machine_name}%")
.order("LOWER(name)")
.paginate(:page => params[:page])
但我认为这是非常低效的,因为有数以万计的关联。搜索我的 Machine 对象的最有效方法是什么,但前提是它们至少具有一个 Part 关联?
【问题讨论】:
标签: ruby-on-rails postgresql search associations ruby-on-rails-5