Ruby on Rails のデフォルトの動作は、コレクションの関連付けに加えられた変更を保存することです。データベースに変更を書き込まずにメモリ内のコレクションを変更できるように、この動作を変更する方法はありますか。
したがって、2つのクラスがある場合:
class Project < ActiveRecord::Base
has_many :tasks
class Task < ActiveRecord::Base
belongs_to :project
次のようなコードを記述します。
Project.tasks.clear
Project.tasks << task1
Project.tasks << task2
次に、プロジェクトに関連付けられているすべてのタスクを自動的に削除し、変更をデータベースに自動的に書き込みます。
これは、私が達成しようとしていることの不自然な例です。Project.tasks.build() を使用して、新しいタスクを自動的に保存せずにコレクションに追加できることはわかっていますが、追加するタスクは新しいタスクではありません。定義された限られた一連のタスクへのリンクです。デシベルで。それらは、タスクの列挙のエントリと考えることができます。さらに、 Project.tasks.clear はすぐにデータベースにヒットします。
Javaの世界では、Hibernateを使用してエンティティをセッションから切断し、再接続して保存するまでメモリ内のエンティティを変更できます。
ありがとう