![](/img/trans.png)
[英]Ruby on Rails: Custom Devise Registration Controller, Asking For Create Action
[英]Rails: Devise custom create registration
我有一个自定义注册设计,但它没有做我应该做的。
我正在尝试创建新数据:
def create
build_resource(sign_up_params)
if resource.save
yield resource if block_given?
if resource.active_for_authentication?
set_flash_message :notice, :signed_up if is_flashing_format?
sign_up(resource_name, resource)
respond_with resource, :location => after_sign_up_path_for(resource)
if params[:user][:role] == "Proof"
Proof.create(:user_id => current_user.id, :first_name => params[:user][:first_name], :last_name => params[:user][:last_name])
end
else
set_flash_message :notice, :"signed_up_but_#{resource.inactive_message}" if is_flashing_format?
expire_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
这个部分的定制是什么:
if params[:user][:role] == "Proof"
Proof.create(:user_id => current_user.id, :first_name => params[:user][:first_name], :last_name => params[:user][:last_name])
end
但由于某种原因,它没有做到它应该做的事情。 注册后,它不会在我的数据库中创建新数据。 这是错误的位置吗?
Parameters: {"utf8"=>"✓",
"authenticity_token"=>"3QTVW3x3cnWho5yd6aEMC31iDIDu+IHQClpQao9VBqc=",
"user"=>{"first_name"=>"First",
"last_name"=>"Last",
"role"=>"Proof"}}
在create
动作中,交换
respond_with resource, :location => after_sign_up_path_for(resource)
if params[:user][:role] == "Proof"
Proof.create(:user_id => current_user.id, :first_name => params[:user][:first_name], :last_name => params[:user][:last_name])
end
至
if params[:user][:role] == "Proof"
Proof.create(:user_id => current_user.id, :first_name => params[:user][:first_name], :last_name => params[:user][:last_name])
end
respond_with resource, :location => after_sign_up_path_for(resource)
目前,没有创建Proof
记录,因为if
语句中的代码是死代码并且从不执行。 调用respond_with
方法时,方法create
返回。 在respond_with
调用之前执行if
语句应解决您的问题。
UPDATE
根据与OP的聊天会话,由于对custom_url
字段进行了验证,因此未创建Proof
记录。 建议使用on: :update
选项更改验证。
validates :custom_url, uniqueness: true, on: :update
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.