ruby-on-rails - 在第三个模型中加入两个 Rails ActiveRecord 模型

标签 ruby-on-rails ruby rails-activerecord

我的问题如下: 我有两个模型,A和B。现在我想创建第三个模型C,它引用另外两个模型A和B,这样模型C的一个对象可以“容纳”A和B的多个对象。

我想用它做什么: 模型 A 和 B 都有一个名为 :hero_image 的属性。现在我想显示 A 和 B 的所有 :hero_images,它们加入到 C 的对象中。

实际上我不确定我是否需要模型 C。 我有项目和竞赛,我想将它们加入到一个集合中。

projects = Project.where.not(hero_image: nil)
competitions = Competition.where.not(hero_image: nil)

现在我想加入这两个集合。

我追错了兔子。我所需要的只是

collection_of_proj_and_comps = projects + competitions

谢谢你的建议。让我重新思考这个问题。

最佳答案

您仍然可以使用union管道运算符来连接两个ActiveRecord对象列表。

projects = Project.where.not(hero_image: nil)
competitions = Competition.where.not(hero_image: nil)
collection_of_proj_and_comps = projects | competitions

这将为您提供同一列表中所有这些对象的数组。

我只是添加测试以确保它们都像彼此一样“嘎嘎”。因此,请添加测试以确保它们都响应 hero_image 以及您稍后将使用此联合集合执行的其他操作。


预编辑问题的旧答案

为了便于输入语法,我将重新制作具有许多帖子和评论的用户的场景。

在你的 User 类中你可以做类似的事情

@user.comments.pluck(:hero_image) | @user.posts.pluck(:hero_image)

这将创建两个数组,然后合并,从两个查询之间的重叠中删除任何重复的条目。

关于ruby-on-rails - 在第三个模型中加入两个 Rails ActiveRecord 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50470561/

相关文章:

ruby-on-rails - EOFError:文件结尾已到达 Net::HTTP 问题

ruby-on-rails - 为什么不能给这个继承的类属性赋值呢?

ruby-on-rails - RSpec 测试 Controller 有 ArgumentError : wrong number of arguments (given 2, 预期 0) Rails 4.2.8

mysql - Rails 服务器未在 Rails 3.1.2 上启动

Ruby 将数组与数组的哈希进行比较和匹配

ruby-on-rails - Ruby 遍历数组

ruby-on-rails - 在 rails 中解析日期

ruby-on-rails - 与 ActiveRecord 中的属性的自引用关联

ruby-on-rails - ActiveRecord 事务只是到数据库的 1 次往返吗?

ruby-on-rails - 我可以在服务对象中包含辅助方法吗?