验证电子邮件地址的存在(不能为空) - Ruby on Rails

时间:2010-07-08 03:53:01

标签: ruby-on-rails

这一切都很新鲜。我有一个简单的表单供用户输入几条信息,然后输入他们的电子邮件地址并按下提交按钮。我想强制要求他们必须填写他们的电子邮件地址才能按下提交按钮。如果他们没有填写他们的电子邮件地址,他们应该在电子邮箱上收到一条错误消息,说明电子邮件不能为空。我知道这是非常简单但我需要确切的帮助,在哪里放什么代码。我整晚都在研究这个问题并且知道代码的一部分应该放在application_controller中,其他的应该放在实际的text_field:email所在的html文件中。 如果有人能清楚地告诉我这样做的必要步骤,我将不胜感激。谢谢!

3 个答案:

答案 0 :(得分:3)

它应该放在你的模型中。加上这个:

class Model < ActiveRecord::Base 
 validates_presence_of :email
end 

点击此链接了解详情:http://guides.rails.info/activerecord_validations_callbacks.html#validates-presence-of

答案 1 :(得分:3)

在我假设您正在使用的Rails 2中,验证会进入模型。它位于$ Rails_app_directory / app / model / $ Classname.rb

要添加ActiveRecord验证,您可以使用

validates_presence_of :email_address

您还应该考虑使用Rails生成确认字段并过滤掉格式不正确的电子邮件地址。你可以通过以下方式完成前者:

validates_confirmation_of :email_address

有了这个,您需要添加到表单的所有内容都是text_field:email_address_confirmation

和后者的正则表达式如:

validates_format_of :email_address, :with => /\A[\w\.%\+\-]+@(?:[A-Z0-9\-]+\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|jobs|museum)\z/i

答案 2 :(得分:0)

从snipplr,放入你的模特

validates_format_of     :email,
                        :with       => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i,
                        :message    => 'email must be valid'