LoginSignup
15
16

More than 5 years have passed since last update.

Rails4で最新版のdevise/devise_invitable関連でハマったこと

Last updated at Posted at 2013-09-12

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
をオーバーライドした

15
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
16