基本的に、この作業方法のバージョンである AREL を探しています。
@jobs.select{|a| !a.assignments.present? }
AREL またはwhere
ステートメントを想定すると、より適切で高速になります。私が今持っているものよりも速く書くにはどうすればよいでしょうか。
基本的に、この作業方法のバージョンである AREL を探しています。
@jobs.select{|a| !a.assignments.present? }
AREL またはwhere
ステートメントを想定すると、より適切で高速になります。私が今持っているものよりも速く書くにはどうすればよいでしょうか。
仮定するとJob has_many assignments
@jobs.where('id in (select j.id from jobs j inner join assignments a on a.job_id=j.id)')
Job.joins(:assignments).where('assignments.present' => false)
次の sql を実行します。
SELECT "jobs".* FROM "jobs" INNER JOIN "assignments" ON "assignments"."job_id" = "jobs"."id" WHERE "assignments"."present" = 't'