Ruby on rails 特定于一个表单的Rails验证
我正在开发一个web应用程序,其中用户有一个两步注册过程。在第一步之后,已经创建了用户对象。在第二步中,用户将填写更多信息。因此,我想知道如何创建特定于表单的验证。我在这里复制了我的相关代码 控制器注册\u Controller.rb后:Ruby on rails 特定于一个表单的Rails验证,ruby-on-rails,validation,Ruby On Rails,Validation,我正在开发一个web应用程序,其中用户有一个两步注册过程。在第一步之后,已经创建了用户对象。在第二步中,用户将填写更多信息。因此,我想知道如何创建特定于表单的验证。我在这里复制了我的相关代码 控制器注册\u Controller.rb后: class Users::AfterSignupController < ApplicationController before_action :authenticate_user! # after_save :user_signup_
class Users::AfterSignupController < ApplicationController
before_action :authenticate_user!
# after_save :user_signup_completed!
def finish
verify_referral_code params[:referer_referral_code]
respond_to do |format|
format.html { render }
format.json { render :json => { errors: resource.errors }, :status => :unprocessable_entity }
end
end
protected
def form_params
params.permit(
:referer_referral_code,
:primary_email,
:mobile_number,
:nickname,
:date_of_birth
)
end
end
我有一些可用的逻辑,但我不知道如何将验证器专门连接到此表单
因为AfterSignUpValidator
是User
模型的一部分,但它本身不是一个模型。。我真的不知道它应该从哪里继承
感谢您的指导~ 在这种情况下,一种常见的方法是将此功能提取到表单对象中。对使用gem的表单对象有一个很好的概述,它运行得非常好 虽然我还没有机会使用它,但它看起来很有希望 最后,如果你有一个Railscasts Pro帐户(强烈推荐),Ryan在上做了一个很棒的插曲
希望这能有所帮助。有时对于简单的用例,您可以定义上下文验证 它看起来像:
# in model
validates :referal_code, on: :signup.
validates :email, on: :update.
# in controller
@user = User.new(user_params)
if user.save(:signup)
...
更多信息在或
# in model
validates :referal_code, on: :signup.
validates :email, on: :update.
# in controller
@user = User.new(user_params)
if user.save(:signup)
...