Activescaffold の subform における更新も変です。昨日は、この問題を追っていましたが、簡単には解決できず、template オーバーライドで
_hoge_form_column.html.erb
<div>
<%= render :active_scaffold => "hoges", :constraints => { :fuga_id => @record.id }
-%>
</div>
解決しました。
そうでもしないと、has_many の関連レコードが、全部削除して、全部挿入されてしまいます。モデルで
:has_many => hoges, :dependent => :destroy
と指定しない場合には、全部削除の代わりに全部リンクが外され(fuga_id に nil がセットされる)、どんどんとレコードが増え続けます。仮に hoge モデルに対して belongs_to を指定しているモデルがあった場合には、どうするつもりなんでしょうか? ticket 353 の事ですが、habtm が前提となって書かれている気がします。enumlator と yield の嵐で、自己完結的に記述されていて、修正は難しいように感じました。ここは、バグの巣窟です。コントローラにて config.columns[:hoges].show_blank_record = false を指定すると、ここでは最後の1レコードが永遠に削除できません。逆に blank_record を表示するようにした場合、hoge の初期値に何かを設定すると、record.unsaved = true が働いてしまい。fuga 更新時には勝手に hoge のレコードが挿入されてしまいます。
0 件のコメント:
コメントを投稿