2012-02-08 10 views
0

これは本物の髪の毛を引っ張るものです。私は2つの異なるエントリを照会するために必要なジャンクション・テーブルを持っています。そして、ジャンクション・テーブルを更新してください。Rails ActiveRecordの内部の値を比較する

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>] 

私はそれらのレコードの各1の内容を比較する必要があるとmaster_actorsに存在しないslave_actorsにエントリが存在する場合、私はそれらを挿入する必要があります。

は基本的に私は、これは持っています。

私が理解できないことは、これら2つのactiveRecord関係オブジェクトの内容を比較する方法です。 .include?のような通常の配列メソッドは動作していないようです。 master_actors.attributes == slave_actors.attributesもありません。なぜなら、属性メソッドがactiveRecord関係に存在しないというエラーが表示されるからです。

基本的に私は本当に困っています。

ご協力いただければ幸いです。

答えて

1

交差点(ary1 & ary2)が空であるかどうかを確認しましたか?

EDITslave_actorsから存在しないことができるmaster_actorsの要素があるので、下記のコメント欄で述べたように、差(ary1 - ary2)は(master_actors.to_a.should当量についてどの

+0

私は交差点に精通していません(私たちは現在Google上でドキュメントを探しています)。あなたは例を提供するほど親切にできますか? – kakubei

+0

私が今見ている解決策は、両方の違いから新しい配列を作成し、スレーブのエントリを削除し、その新しい配列の値をマスタIDとともに挿入することです。 – kakubei

+0

数学的に言えば、2つの集合の交点は、両方の基底集合に存在する要素だけで構成される集合です。ですから、 'slave_actors'には存在しない' master_actors'に要素が存在しないということを当然のこととして考えてみてください。このトピックの詳細については、[Array#&](http://ruby-doc.org/core-1.9.3/Array.html#method-i-26)を参照してください。 – ksol

0

正解でしたslave_actors.to_a) - 私のために働いてください

関連する問題