ruby-on-rails - Rails 5.2 急切加载多态嵌套
问题描述
是否可以急切加载多态嵌套关联?我怎么能include
doctor_profile
代表Recommendation
's 和patient_profile
's 代表Post
's?
我可以打电话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
解决方案
关于引用这个 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(recommendation: :doctor_profile)表示
- Activity 将加入推荐与 foreign_type 和 trackable_id
- 然后从推荐将加入 doctor_profile 和 doctor_profile_id
推荐阅读
- pandas - 熊猫识别是否有任何元素在一行中
- xamarin.forms - 为 Xamarin TableView 中的每个 EntryCell 设置相同的标签宽度
- python - 为什么迭代行会删除 csv.reader 和 csv.DictReader 中的数据?
- c# - 如何模拟 ActivityContext 类
- julia - 在 JuMP/Gurobi 中添加 OR 约束
- ios - 如何在 popViewController 之后从第二个 ViewController 执行功能?
- html - 如何在 HTML 中单击按钮时更改 iframe 源?
- r - 无法读取由 R 4.0.2 编写的工作区版本 3;需要 R 3.5.0 或更新版本
- sql - 排序依据——不同标准的不同顺序
- vb.net - 如何删除进程中当前正在使用的图像