細かきこと

書いたり書かなかったり

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