Я ищу лучший способ запрашивать пользователей из двух разных моделей, используемых в полиморфной ассоциации. Вот установка
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
На данный момент я решаю это, создавая метод внутри модели расписания, который захватывает пользователей следующим образом:
def subscribers
targets.map(&:target).map(&:users).flatten.uniq
end
Я посмотрел на что-то подобное с этим вопросом, но не показалось чтобы решить это.
targets.map(&:target)
будет включать экземпляры разных классов, или она должна включать только экземплярыAccount
? - person chumakoff   schedule 09.10.2019has_many :targets, as: :target
вList
, чтобы это было понятно - person chumakoff   schedule 10.10.2019