-1
Ruby on Rails 5(PostGres 9.5)アプリケーションに2つのモデルがあります。私はマシンのオブジェクトを検索したいので、私はモデルを検索するにはどうすればよいですか?少なくとも1つの子関連がある場合のみですか?
@results = Machine.where("name ILIKE ?", "%#{machine_name}%")
.order("LOWER(name)")
.paginate(:page => params[:page])
を持っていますが、注意点は、私が唯一の少なくとも一つを持つオブジェクトを返すようにしたいです
class Machine < ActiveRecord::Base
has_many :parts
と
class Part < ActiveRecord::Base
belongs_to :machine
を持っていますそれらに関連付けられたパートオブジェクト。私は分かりますか?
@results = Machine.joins(:parts)
.where("name ILIKE ?", "%#{machine_name}%")
.order("LOWER(name)")
.paginate(:page => params[:page])
しかし、これは実際には非効率的なものとして数万の関連があります。私のマシンオブジェクトを検索する最も効率的な方法は何ですか?ただし、少なくとも1つのパーツ関連がある場合のみですか?
を達成することができます - 」.where(ID:machine_ids) "PostGresに" WHERE ID IN(id1、... id1000000) "句を実行させますか? – Dave
はい、そうです。それは超最適化されたバージョンではなく、ほとんどの状況でかなりうまく動作するものです。 – Iceman
新しいバージョンが更新されました。 – Iceman