after_initializeでActiveRecord::MissingAttributeError: missing attribute:
インスタンス変数を初期化したい場合、after_initializeコールバックを使って
class Account def after_initialize self.password ||= "hogehoge" end end
とかやってると、MODEL.exist?でActiveRecord::MissingAttributeError: missing attribute:passwordと例外がraiseされる。
SELECT "accounts".id FROM "accounts" WHERE (id =1) LIMIT 1
http://underrails.seesaa.net/article/120340479.htmlで書かれてるように、idしか引っ張らないSQLが実行されるのが原因。
何でこうなるのかな?と調べてみたら、railsのバグみたいだ。
https://rails.lighthouseapp.com/projects/8994/tickets/3165-activerecordmissingattributeerror-after-update-to-rails-v-234
というか、深く考えないで以下のようにしてたけど、よくないのかな?
class Account def after_initialize @attributes['password'] ||= "hogehoge" end end