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,你怎么看?