Railsにはモデルのデータ保存によるコールバックがありますが、狙ったとおりに動かないので質問します。
起こった現象
3つのモデルを、以下のように結んでいました。
ruby
1class Main 2 has_one :sub 3 accepts_nested_attributes_for :sub, allow_destroy: true 4end 5 6class Sub 7 has_many :subsubs 8 belongs_to :main 9 accepts_nested_attributes_for :subsubs, allow_destroy: true 10end 11 12class Subsub 13 belongs_to :sub 14end
そして、3つまとめて更新できるようなフォームを作ってMain.after_update
を仕掛けてみたところ、以下のような状態になりました。
Sub
に関しては変更を行っても、**_was
やchanges
に何も現れないSubsub
については、**_was
やchanges
などで取れる変更内容が、本来のものと逆向きになってしまう
質問内容
- どうしてこのような現象が起きるか
- 「子クラスの側にコールバックを仕掛ける」とか「逆向きに来るのを前提に処理を組む」といった方法以外に、対応する手段はあるのか
環境
- Ruby on Rails 4.2.7.1
- MySQL 5系列
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/21 07:14