1
我Driver
模型的has_many Workables
當子模型有兩個屬性
如何索要Drivers
列表,有workable
其中vehicle_id
是x
和has_vehicle
是true
?
我不希望包括Drivers
有兩個workables,其中一個具有正確vehicle_id
,而另一個有has_vehicle
==真
理想我可能要爲這樣的範圍。
我試過以下,但它不返回任何記錄,在Driver.rb
:
scope :has_vehicle, -> (vehicle) {
joins(:workables).
where('workables.vehicle_id = ?', vehicle).
where('workables.has_vehicle = ?', true) }
我可以去這樣的做法,但它看起來超慢:
arr = []
Workable.where(vehicle: x).where(has_vehicle == true).each do |e|
arr += e.drivers.map(&:id)
end
@drivers = @drivers.where(id: arr)
是上面的快速如果我使用急切加載?
是否有你'分離vehicle_id'(整數)和'has_vehicle'(布爾)的原因嗎?您可以通過'vehicle_id'中繼來確定'Driver'是否確實有車輛,而不是將其存儲在DB中 – MrYoshiji 2015-03-31 15:40:41
是的,布爾值提供了新信息。駕駛員選擇他們想要使用的車輛,以及車輛是由他們自己還是由僱主提供。 – 2015-03-31 15:45:01