質問: MultiLocale.new(val) end ``` をオーバーライドしなければデフォルトではどういう挙動をするのでしょうか @変数 にかきこめばそれ(をシリアライズしたもの)がカラムになる? と思っていたのですがどうやら違うようです save のときに MySQL に書き込まれる値はどこに保持されているのでしょうか
回答: とりあえずカラムの保存したければ before_validation の最後で self[:image] = @image とすれば MySQL には入ると思います * [] : カラムのデータ * @変数: モデル内のローカル変数(同名であってもカラムとは実態が別) * .image, .image= :単なるメソッドでどの実体を読み書きするかは実装によります デフォルトはカラムの読み書き(Serialize がかかれてると型変換もやってくれる)だけど 今回それをオーバーライドしてローカル変数に読み書きするようにしたために カラムはずっと変化しない(new の場合 nil のまま) なのでエラーになったと思われます