Railsでウィザード形式のユーザー登録を実装しようと調べるとよく出てくるこの記述。
Railsのメソッドなのか?deviseのヘルパーメソッドなのか?
結論:ただの変数名
session["devise.regist_data"] = {user: @user.attributes}
これ、あくまで「sessionを使ってユーザー情報を保持する」ための記述。
devise.regist_dataという記述自体には特に意味がなくて、ただの変数名なのである。
よって、
session["hogehogehoge"] = {user: @user.attributes}
このように適当な変数名をつけてもOKなのだ。
@address = @user.build_addressとは
belongs_toで関連付けられたクラスでは「build_association」というメソッドを使用することができる。
これは「モデルと関連付けてbuildする」メソッドである。
create
ではなくbuild
なのは、address単体で保存するわけでは無いからである。
ということで、これは「userに結びつけてaddressをbuildする」という記述なのだ。
他のメソッドはRailsガイドに詳しい。