2

このコントローラーをオーバーライドしたいのですが、現時点ではcreateメソッドで、すでに少し変更を加えています

class RegistrationsController < Devise::RegistrationsController
    def create
      unless session[:invitation_token].blank?
        super
      else
        redirect_to new_user_session_path and return
      end
    end

end

サインアップの流れに従った後、スーパークラスが定義するように、リソースがデータベースに作成されます

  def create
    build_resource

    if resource.save
      if resource.active_for_authentication?
        set_flash_message :notice, :signed_up if is_navigational_format?
        sign_up(resource_name, resource)
        respond_with resource, :location => after_sign_up_path_for(resource)
      else
        set_flash_message :notice, :"signed_up_but_#{resource.inactive_message}" if is_navigational_format?
        expire_session_data_after_sign_in!
        respond_with resource, :location => after_inactive_sign_up_path_for(resource)
      end
    else
      clean_up_passwords resource
      respond_with resource
    end
  end

しかし、何らかの方法でメソッドactive_for_autheticationに問題がありますか?

falseがスローされ、すべての gem をチェックした理由がわかりません。メソッドが他のモジュールによってオーバーライドされていると書かれていますが、通常の定義は次のとおりです。

def active_for_authentication?
  true
end

しかし、私はそれをオーバーライドするモジュールを使用していないので、何らかの理由でその検証を成功させることができないように思われますが、ユーザーはデータベースに保存されており、登録後にサインインしています。

これは、ユーザーを登録するための私の構成です。

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable,
  # :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me, :username
end

これはデバイスの初期化子です

Devise.setup do |config|

  config.mailer_sender = "please-change-me-at-config-initializers-devise@example.com"

  require 'devise/orm/active_record'
  config.case_insensitive_keys = [ :email ]
  config.strip_whitespace_keys = [ :email ]
  config.skip_session_storage = [:http_auth]
  config.stretches = Rails.env.test? ? 1 : 10
  config.password_length = 6..15
  config.reset_password_within = 6.hours
  config.sign_out_via = :delete


end
4

0 に答える 0