在Devise中设计NoMethodError ::注册#create for email

时间:2015-02-25 00:09:30

标签: ruby-on-rails devise

我的Rails 4.2应用程序使用设计进行身份验证,但它不打算使用用户的电子邮件,因此电子邮件没有SQL列。所以我进入/config/intializers/devise.rb并将文件更改为config.authentication_keys = [ :username ]。不幸的是,当我尝试点击应该指向POST localhost:3000/users的{​​{1}}端点时,我得到了这样的回复:

enter image description here

enter image description here

我的应用不需要任何HTML模板,因为它只是一个API。使用Devise::Registrations#create,我可以看到我写的代码都没有被击中。以下是我到目前为止的情况:

byebug

如何在不创建无用的额外class Users::RegistrationsController < Devise::RegistrationsController before_filter :configure_sign_up_params, only: [:create] before_filter :configure_account_update_params, only: [:update] # POST /resource def create byebug super @user = User.new(params[:user]) if @user.save respond_to do |format| format.json do render json: @user, serializer: UserLoginSerializer end end else respond_to do |format| format.json do render status: :unprocessable_entity, json: { error: "Invalid Parameters for User Creation" } end end end # protected # You can put the params you want to permit in the empty array. def configure_sign_up_params devise_parameter_sanitizer.for(:sign_up) << :username, :password, :password_confirmation, :platform end end 属性的情况下绕过此错误?

1 个答案:

答案 0 :(得分:0)

哎呀我忘了在routes.rb中指定我的控制器。你必须这样做:

devise_for :users, controllers: {
    registrations: "users/registrations",
    sessions: 'users/sessions'
  }

我原以为devise_for :users已经足够了。