Rails 5.2 рвется в полиморфную нагрузку - PullRequest
0 голосов
/ 20 февраля 2019

Можно ли загружать полиморфные вложенные ассоциации?Как я могу include doctor_profile для Recommendation и patient_profile для Post?

Я могу позвонить Activity.includes(:trackable).last(10), но не знаю, каквключить соответствующие модели прошлого там.Я пытался belongs_to :recommendation, -> { includes :patient_profile, :doctor_profile} без удачи

class Activity
  belongs_to :trackable, polymorphic: true

end

class Recommendation
  has_many :activities, as: :trackable
  belongs_to :doctor_profile

end

class Post
  has_many :activities, as: :trackable
  belongs_to :patient_profile

end

1 Ответ

0 голосов
/ 20 февраля 2019

со ссылкой на этот SO-ответ и комментарии для вашей проблемы вы можете управлять с помощью поля foreign_type из полиморфной таблицы, чтобы указать, какая модель его использует

class Activity
  belongs_to :trackable, polymorphic: true
  # below is additional info
  belongs_to :recommendation, foreign_type: 'Recommendation', foreign_key: 'trackable_id'
  belongs_to :post, foreign_type: 'Post', foreign_key: 'trackable_id'
end

, и вы можете вызвать его

Activity.includes(recommendation: :doctor_profile).last(10)
Activity.includes(post: :patient_profile).last(10)

Activity.includes (рекомендация:: doctor_profile) означает

  • Активность объединит рекомендацию с foreign_type и trackable_id
  • , а затемиз рекомендации присоединится doctor_profile с doctor_profile_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...