私の車両モデルには、自動の場合は true、手動の場合は false を返すメソッド auto があります。
vehicle_idこれは false です。次のメソッドは、属性が Vehicle と等しいすべての Auto を含む ActiveRecord::Relation を返しますid。
def auto
Auto.where(:vehicle_id=>self.id)
end
Vehicle に Auto が関連付けられているかどうかをテストするコードが必要な場合は、次を使用します。
def auto?
Auto.where(vehicle_id: self.id).present? # returns TRUE or FALSE
end
次に、手動のすべての車両を取得する場合:
Vehicle.all.select{|vehicle| vehicle.auto? != true }
または DB レベルで (より速く、より良く、より強力に!):
Vehicle.where('id NOT IN (?)', Auto.pluck(:vehicle_id).uniq.compact)
# This will get all vehicles where there id is not contained in the Auto table