Rails Сравнение значений внутри ActiveRecord Relations - PullRequest
0 голосов
/ 08 февраля 2012

это настоящий волосатик. У меня есть таблица соединений, которую мне нужно запросить для 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>]

Мне нужно сравнить содержимое каждой из этих записей, и если в slave_actors есть записи, которых нет в master_actors, мне нужно вставить их.

Что я не могу понять, так это как сравнить содержимое этих двух объектов отношений activeRecord. Методы обычного массива, такие как .include?, похоже, не работают. Также не master_actors.attributes == slave_actors.attributes, потому что я получаю сообщение об ошибке, говорящее, что метод атрибутов не существует для отношения activeRecord.

По сути, я действительно в тупике.

Любая помощь будет оценена.

Ответы [ 2 ]

1 голос
/ 08 февраля 2012

Вы пробовали проверить, является ли пересечение (ary1 & ary2) пустым?

РЕДАКТИРОВАТЬ : Как упомянуто в комментариях ниже, поскольку в master_actors есть элементы, которые могут бытьотсутствует slave_actors, разница (ary1 - ary2) была правильным ответом

0 голосов
/ 22 июля 2013

как насчет master_actors.to_a.should eq (slave_actors.to_a) - работает для меня

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...