Rails比较ActiveRecord关系中的值

Rails比较ActiveRecord关系中的值,activerecord,ruby-on-rails-3.1,Activerecord,Ruby On Rails 3.1,这是一个真正的理发师。我有一个连接表,我需要查询两个不同的条目,然后更新连接表,如果值不存在 基本上我有: master_actors = [#<Actor2role actorId: 13176, dogTag: 45917, roleId: 1, position: 3>, #<Actor2role actorId: 65471, dogTag: 45917, roleId: 291075, position: 1>] slave_actors = [#<Ac

这是一个真正的理发师。我有一个连接表,我需要查询两个不同的条目,然后更新连接表,如果值不存在

基本上我有:

master_actors = [#<Actor2role actorId: 13176, dogTag: 45917, roleId: 1, position: 3>, #<Actor2role actorId: 65471, dogTag: 45917, roleId: 291075, position: 1>]

slave_actors = [#<Actor2role actorId: 11123, dogTag: 5384, roleId: 44, position: 5>, #<Actor2role actorId: 65471, dogTag: 5384, roleId: 291075, position: 0>, #<Actor2role actorId: 66652, dogTag: 5384, roleId: 291073, position: 2>]
master_actors=[#,#]
奴隶演员=[#,#,#]
我需要比较每一条记录的内容,如果在slave_actors中有条目在master_actors中不存在,我需要插入它们

我搞不懂的是如何比较这两个activeRecord关系对象的内容。像
.include?
这样的常规数组方法似乎不起作用。
master\u actors.attributes==slave\u actors.attributes
也不存在,因为我得到一个错误,说activeRecord关系不存在attributes方法

基本上我真的被难住了


任何帮助都将不胜感激

您是否尝试检查交叉点(
ary1&ary2
)是否为空


编辑:正如下面的评论中所提到的,由于
主参与者
中有一些元素可以从
从参与者
中删除,因此不同之处(
ary1-ary2
)是正确的答案

主参与者对a.应该eq(从参与者对a)如何-为我工作

我恐怕不熟悉Crossion(现在在谷歌上查找文档)。请您举个例子好吗?我现在看到的解决方案是根据两者之间的差异创建一个新数组,删除slave的条目并插入带有master ID的新数组的值。从数学上讲,两个集合的交集是仅由两个基集合中的元素组成的集合。因此,想当然地认为在
master\u actors
中不可能存在
slave\u actors
中缺少的元素,我认为它应该做到这一点。有关该主题的更多信息,请参阅。实际上,主角色中可能存在从角色中缺少的元素。这就是为什么我使用了差分算子,这就成功了。如果你想将答案改为使用差分运算符,我可以将其标记为已接受。非常感谢你的帮助。你提到的交叉点让我找到了最终在这个例子中起作用的差分算子。我编辑了这篇文章。我不太在意这些要点,但我认为如果将其标记为已解决,其他人可能会更容易找到这篇文章