我的Rails 4.2应用程序使用设计进行身份验证,但它不打算使用用户的电子邮件,因此电子邮件没有SQL列。所以我进入/config/intializers/devise.rb
并将文件更改为config.authentication_keys = [ :username ]
。不幸的是,当我尝试点击应该指向POST localhost:3000/users
的{{1}}端点时,我得到了这样的回复:
我的应用不需要任何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
属性的情况下绕过此错误?
答案 0 :(得分:0)
哎呀我忘了在routes.rb
中指定我的控制器。你必须这样做:
devise_for :users, controllers: {
registrations: "users/registrations",
sessions: 'users/sessions'
}
我原以为devise_for :users
已经足够了。