ActiveRecord захватить общую модель из полиморфной ассоциации - PullRequest
0 голосов
/ 09 октября 2019

Я ищу лучший способ опроса пользователей из 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

Я посмотрел на что-то похожее с этим вопросом , но, похоже, не решил его.

...