
[code]

    class Foo < ApplicationRecord
      has_many :bar
    end
    
    class Bar < ApplicationRecord
      belongs_to :foo
    end
    
[/code]

の関係のとき

[code]

    foo1 = Foo.new
    foo1.bar.build
    
[/code]

とすれば、保存を遅延させることができます  
create を使えば直ちに保存されます

しかし削除では直ちに削除する方法はあっても、削除を遅延させる方法がないように思います

[code]

    foo1 = Foo.find(1)
    # どれも DELETE が発行される
    foo1.bar.clear
    foo1.bar = []
    foo1.bar.replace([Bar.new])
    
[/code]

Rails には build に対応するような、削除の遅延処理を行う機構は用意されていないのでしょうか？


CC BY-SA 4.0
2021-04-30T09:24:40.490
75589
2021-04-30T09:24:40.490
9796
question
ruby-on-rails ruby
Railsで has_many の要素の削除を遅延する方法