devise
devise_for へのブロック指定がDeprecated
ブロックを渡すためには、以下のようにdevise_scopeを使う。
旧)
devise_for :users, controllers: {passwords: 'users/passwords'}, skip: [:sessions] do
get 'login' => 'users/sessions#new', as: :new_user_session
end
新)
devise_for :users, controllers: {passwords: 'users/passwords'}, skip: [:sessions]
devise_scope :user do
get 'login' => 'users/sessions#new', as: :new_user_session
end
OrmAdapter::ActiveRecordとActiveRecordの間に差異
find_firstやfind_first_by_...などがRails4でDeprecatedとなったが、
DeviseはOrmAdapter::ActiveRecordを使っていて、これはActiveRecord4.0以降に合わせられていないので、
resource_class.to_adapterで使えるメソッドとresource_classで使えるメソッドが異なる。
PasswordsController#newでbuild_resourceが意味ない
以前のDevise::PasswordsControllerからコピーしてカスタマイズして、
build_resource({})
としていた場合、最新版のように
self.resource = resource_class.new
としないとresourceが設定されない。
devise_invitable
invitation_created_atカラムが追加された
マイグレーションが必要
invitation_tokenを別名で使っている場合
prepend_before_filter
で
resource_from_invitation_token
の前に
params[:invitation_token]
を指定していたが、
prependされなかったので
resource_from_invitation_token
をオーバーライドした