Я ищу лучший способ опроса пользователей из 2 разных моделей, используемых в полиморфной ассоциации. Вот настройка
class Schedule < ApplicationRecord
belongs_to :announcement
has_many :targets, dependent: :destroy
has_many :lists, through: :targets, source: :target, source_type: 'List'
has_many :accounts, through: :targets, source: :target, source_type: 'Account'
end
class Target < ApplicationRecord
# belongs_to :announcement
belongs_to :schedule
belongs_to :target, polymorphic: true
delegate :announcement, to: :schedule
end
class List < ApplicationRecord
belongs_to :account
has_many :targets, as: :target, dependent: :destroy
has_many :lists_users
has_many :users, through: :lists_users
end
class Account < ApplicationRecord
has_many :announcements, dependent: :destroy
has_many :targets, as: :target, dependent: :destroy
has_many :users, dependent: :destroy
end
В данный момент я решаю эту проблему, создав метод внутри модели Schedule, который захватывает пользователей таким образом:
def subscribers
targets.map(&:target).map(&:users).flatten.uniq
end
Я посмотрел на что-то похожее с этим вопросом , но, похоже, не решил его.