Rails中如何关联两个ActiveRecord模型?或合并模型查询集合
无需新增关联模型,快速合并两个ActiveRecord模型的目标实例集合
我之前碰到过一个类似的需求:需要把Project和Competition这两个ActiveRecord模型里,hero_image属性不为空的实例合并成一个统一的集合,用来展示它们的hero_image。
一开始我想复杂了——计划创建第三个模型C,用它来关联Project和Competition,让C的实例能关联多个这两个模型的实例,以此来统一管理要展示的内容。
结果实际操作的时候才发现,完全没必要搞这么复杂!直接用数组相加就能轻松实现需求:
# 先筛选出hero_image不为空的实例,再合并成一个集合 projects.where.not(hero_image: nil) + competitions.where.not(hero_image: nil)
这个方法既不用额外维护新的模型和关联关系,代码还简洁直观,完美满足了展示所有符合条件的hero_image的需求。
内容的提问来源于stack exchange,提问作者C.Diezinger
相关产品推荐
相关产品推荐

