Rails比较ActiveRecord Relations中的值

时间:2012-02-08 16:33:22

标签: activerecord ruby-on-rails-3.1

这是一个真正的拔毛者。我有一个联结表,我需要查询2个不同的条目,然后更新联结表,如果值已经没有。

基本上我有这个:

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中的条目,我需要插入它们。

我无法弄清楚如何比较这两个activeRecord关系对象的内容。像.include?这样的常规数组方法似乎不起作用。 master_actors.attributes == slave_actors.attributes也没有,因为我收到一条错误,指出对于activeRecord关系,属性方法不存在。

基本上我真的很难过。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

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

编辑:如下面的评论中所述,由于master_actors中的元素可能不在slave_actors中,因此差异(ary1 - ary2)是正确答案

答案 1 :(得分:0)

怎么样master_actors.to_a.should eq(slave_actors.to_a) - 为我工作