0

リレーションのリストを保存せずに変更したい。

foo = Foo.first
foo.bars = []
foo.bars.reload
foo.bars
#=> [<Bar...>, ...]

db トランザクション (リロードを除く) を実行せずにこのコードを使用したいのですが、ブロックまたは gem の中にある可能性があります ... しかし、ロールバックはしたくありません。

以下のコードが機能することは知っていますが、関係を変更してさまざまな関数で検証する必要があるため、それは私が望むものではありません。

foo = Foo.first
@bars = foo.bars
@bars = []
foo.bars
#=> [<Bar...>, ...]

さらに情報が必要な場合は、お知らせください。

ありがとう

4

1 に答える 1

0

後で使用するために、別の変数を使用して関係を複製してみてください。

2 つの個別のオブジェクトを使用すると、一方を修正してもう一方の関係を使用し、必要なオブジェクトを保存できます。

# rails < 3.1
new_record = old_record.clone

#rails >= 3.1
new_record = old_record.dup
于 2012-12-21T10:12:06.690 に答える