位置屬於一個或多個實體。一個實體可以有一個或多個位置。平均SQL在Rails 4中沒有SQL使用連接和其中
我嘗試獲取與當前位置具有相同實體的所有其他位置。
我有以下型號:
class Location < ActiveRecord::Base
has_many :location_assignments
has_many :entities, :through => :location_assignments
accepts_nested_attributes_for :location_assignments
end
class Entity < ActiveRecord::Base
has_many :location_assignments
has_many :locations, through: :location_assignments
accepts_nested_attributes_for :location_assignments
end
這是SQL我想
SELECT DISTINCT l.* FROM locations l, location_assignments la, entities e
WHERE l.id = la.location_id
AND la.entity_id = e.id
AND e.id in (SELECT ee.id from entities ee, location_assignments laa
WHERE ee.id = laa.entity_id
AND laa.location_id = 1)
但我不希望使用SQL。 這是我嘗試使用Rails
Location.joins(:entities => :locations).where(:locations => {:id => location.id})
它給了我好幾次的當前位置。行的數量與SQL相同(不區分只能獲取當前位置)。
有什麼想法?