所以我目前正在处理该网站的注册方面。我有一个主要注册,它只是全名,电子邮件和密码。 (又名new.html.erb)
在您填写该信息后,我会将您引导至新网站(setup.html.erb)并询问更多信息,例如城市,国家/地区等。
在此您还拥有编辑个人资料帐户。
我正在尝试使我的应用程序更安全,并在模型中添加限制和存在等。但是我怎么能限制它们。
目前,如果我这样做
验证:电子邮件,在线状态:真实,
我转到一个甚至不包含电子邮件的表格,也不允许我收到错误,我需要添加电子邮件。
另外我如何解决这个问题:我使存在成立,我在html5中输入require。但是,如果我转到我的源代码并删除表单并按提交保存,我可以绕过添加信息。
答案 0 :(得分:0)
Currently if I do validates :email, presence: true,
and I go to a form that doesn't even contain the email for nor permits it I get an error up that I need to add an email.
<强>修正:强>
您需要的是conditional validation
。如果我们看一下铁路指南,就说
Sometimes it will make sense to validate an object only when a given predicate is satisfied. You can do that by using the :if and :unless options, which can take a symbol, a string, a Proc or an Array.
因此,在您的模型中,您可以执行以下操作:
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
<强>更新强>
你可以巧妙地使用 params [:action]和params [:controller] 来检查你当前在哪个动作和控制器(因此是哪个视图)所以你的方法是:
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