У меня есть следующие ассоциации:Scope на has_many,: через отношения с массивом идентификаторов
#models/contact.rb
class Contact < ActiveRecord::Base
has_many :relationships
has_many :locations, through :relationships
end
#models/relationship.rb
class Relationship < ActiveRecord::Base
belongs_to :contact
belongs_to :location
end
#models/location.rb
class Location < ActiveRecord::Base
has_many :relationships
has_many :contacts, through: :relationships
end
То, что я хочу сделать, это создать область, которая находит все contacts
, связанные с массивом location
идентификаторов.
Я попытался использовать этот сфера, но он не работал. Он присоединяется к таблицам правильно, но массив, с которым я сталкиваюсь, вызывает некоторые проблемы. Что-то кажется неправильным в моем синтаксисе в предложении where
.
#models/Contact.rb
class Contact < ActiveRecord::Base
...
scope :by_locations, ->(ids_ary){joins(relationships: :location).where("locations.id IN ?", ids_ary)}
end
ли это 'scope' в коде или 'scoop'? – nik
@nik это 'scope', у меня была опечатка. – Neil