У меня есть отношения «многие ко многим», настроенные с помощью модели соединения. По сути, я позволяю людям выражать свои интересы в деятельности.
class Activity < ActiveRecord::Base
has_many :personal_interests
has_many :people, :through => :personal_interests
end
class Person < ActiveRecord::Base
has_many :personal_interests
has_many :activities, :through => :personal_interests
end
class PersonalInterest < ActiveRecord::Base
belongs_to :person
belongs_to :activity
end
Теперь я хочу выяснить: к каким действиям конкретный пользователь не проявил интерес? Сюда должны входить действия, в которых заинтересованы другие люди, а также действия, в которых нет заинтересованности.
Успешным (но неэффективным) методом были два отдельных запроса:
(Activity.all - this_person.interests).first
Как аккуратно выразить этот запрос в ActiveRecord? Есть ли (надежный, ухоженный) плагин, который абстрагирует запросы?