Ruby on rails 干涸活动记录模型验证
虽然下面的代码段可以工作,但我已经开始探索一种更好的方法来解决这个问题。有人对如何构建这个有更好的想法吗?我感谢你的帮助Ruby on rails 干涸活动记录模型验证,ruby-on-rails,validation,activerecord,Ruby On Rails,Validation,Activerecord,虽然下面的代码段可以工作,但我已经开始探索一种更好的方法来解决这个问题。有人对如何构建这个有更好的想法吗?我感谢你的帮助 class User < ActiveRecord::Base validates :remote_addr, :web_browser, :operating_system, presence: true validates :age_verification, presence: { message: "You must be at least 18 y
class User < ActiveRecord::Base
validates :remote_addr, :web_browser, :operating_system, presence: true
validates :age_verification, presence: { message: "You must be at least 18 years old to register for this application" }
validates :email_address,
allow_nil: false,
allow_blank: false,
presence: { message: "A valid email address is required" },
uniqueness: {
case_sensitive: false,
message: "This email address has been previously registered"
},
email_format: {
check_mx: true,
mx_message: "This email address has a bad domain",
message: "This email address must be formatted properly"
}
end
你可以:
将自定义消息移动到I18n文件,更多信息,例如:
config/locales/en.yml
en:
errors:
attributes:
age_verification:
blank: 'You must be at least 18 years old to register for this application'
email_address:
blank: 'A valid email address is required'
activerecord:
errors:
messages:
invalid_email_address: 'This email address must be formatted properly'
email_address_not_routable: 'This email address has a bad domain'
activemodel:
errors:
messages:
invalid_email_address: 'This email address must be formatted properly'
email_address_not_routable: 'This email address has a bad domain'
并将状态验证、年龄验证、电子邮件字段与其他
2在验证:电子邮件地址,是否真的需要检查允许为空和允许为空以及是否存在?因为验证电子邮件格式与它们重叠,即空白和零不被接受为有效值。为了数据一致性,请使用数据库索引和列约束
所以我会这样做:
validates_presence_of :remote_addr, :web_browser,
:operating_system, :age_verification, :email_address
validates :email_address, uniqueness: { case_sensitive: false },
email_format: { check_mx: true }
将错误消息移动到en.yml文件(见上文),并将创建迁移添加到表中
change_column <tables>, :email, null: false
add_index <tables>, :email, unique: true
问题是,你没有重复太多。您可以使用AR模型来提取错误消息。您是否需要允许电子邮件地址为空/无?真的还不够吗?真的,非常真的。也许我太强调干燥了。我的意思是它仍然可读。六羟甲基三聚氰胺六甲醚。。。这可能有点过头了。这个问题似乎离题了,因为它是关于代码检查的。我有点像这样,但我如何为电子邮件格式添加错误消息?还有@vakilliy这里是我正在使用的有效电子邮件gem:::无效电子邮件地址-对于无效电子邮件,:电子邮件地址\u不可路由-对于:mx\u消息,更多信息@chrishough ie message的路径应该是en.errors.messages.yml notation中的无效电子邮件地址我刚刚做了一些编辑@vakiliy,你怎么看?