Ruby on rails 设计:无法将模型验证限制为特定的def';s

Ruby on rails 设计:无法将模型验证限制为特定的def';s,ruby-on-rails,devise,Ruby On Rails,Devise,因此,我目前正在该网站的注册方面工作。我有一个主要的注册,这只是全名,电子邮件和密码。(又名new.html.erb) 在你填写完这些信息后,我会引导你进入一个新的网站(setup.html.erb),询问更多的信息,比如城市、国家等 在此基础上,您还拥有编辑配置文件帐户 我试图使我的应用程序更安全,并在模型中添加限制和状态等。然而,我怎样才能限制它们 如果我现在这样做的话 验证:电子邮件,状态:真, 我去了一个表单,它甚至不包含电子邮件,也不允许我得到一个错误,我需要添加一封电子邮件 还有,我

因此,我目前正在该网站的注册方面工作。我有一个主要的注册,这只是全名,电子邮件和密码。(又名new.html.erb)

在你填写完这些信息后,我会引导你进入一个新的网站(setup.html.erb),询问更多的信息,比如城市、国家等

在此基础上,您还拥有编辑配置文件帐户

我试图使我的应用程序更安全,并在模型中添加限制和状态等。然而,我怎样才能限制它们

如果我现在这样做的话 验证:电子邮件,状态:真,
我去了一个表单,它甚至不包含电子邮件,也不允许我得到一个错误,我需要添加一封电子邮件


还有,我该如何解决这个问题:我让状态成为现实,我需要在html5中输入。但是如果我转到我的源代码,只需删除表单并按下提交按钮,它就会保存,我可以绕过添加信息。

当前如果我验证:电子邮件,状态:true,
我去了一个甚至不包含电子邮件的表单,也不允许我出现错误,需要添加电子邮件。

修复:

你需要的是一份工作。如果我们看一下导轨,上面写着

有时,只有在满足给定谓词时才验证对象才有意义。您可以通过使用:if和:除非选项来实现这一点,这些选项可以采用符号、字符串、过程或数组。

因此,在您的模型中,您可以执行以下操作:

class Order < ActiveRecord::Base
  validates :email, presence: true, if: :need_to_validate?

  def need_to_validate?
    #your condition to check whether you want email validation or not
  end
end

我需要的是一个非常棒的外观。然而。我在这儿有点傻。对于以下示例,我的条件是什么:在setup.html.erb上,我有:country,:city等,如何使其检查:如果:示例出现在页面上,则显示:true
def need_to_validate?
  params[:action] == your_view_action && params[:controller] == your_controller_name     #your condition to check whether you want email validation or not
end