首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证attr_accessor、Rails 4

验证attr_accessor、Rails 4
EN

Stack Overflow用户
提问于 2016-04-10 06:43:54
回答 1查看 1.7K关注 0票数 1

无论出于什么原因,我都无法正确地验证我的attr_accessor属性。

代码语言:javascript
复制
  attr_accessor :line1, :city, :postal_code, :state, :personal_id_number, :ssn_last_4, :bank_account_number, :bank_routing_number

  validates :line1, presence: true, if: :line1
  validates :city, presence: true, if: :city
  validates :postal_code, presence: true, length: { maximum: 10 }, if: :postal_code
  validates :state, presence: true, length: { maximum: 2 }, if: :state
  validates :personal_id_number, presence: true, numericality: { only_integer: true }, if: :personal_id_number
  validates :ssn_last_4, presence: true, length: { is: 4 }, numericality: { only_integer: true }, if: :ssn_last_4
  validates :bank_account_number, numericality: { only_integer: true }, if: :bank_account_number
  validates :bank_routing_number, numericality: { only_integer: true }, if: :bank_routing_number

有了这段代码,所有属性都会通过验证,无论它们是否应该通过验证。例如,即使超过10个字符,postal_code也会通过,而其他字符即使为空也会通过。

如果我删除if语句,它们都不会通过。我把所有的错误都找回来了。例如,正确填写表单将显示city不能为空,等等。

if语句需要存在,因为这些属性在创建时将为空,并且只出现在edit表单上。

如何让验证与attr_accessor配合使用

EN

回答 1

Stack Overflow用户

发布于 2016-04-10 18:39:57

如果类根本不是由数据库表备份的,那么可以使用ActiveModel来获得ActiveRecord功能。您所需要做的就是将模型包含在您的类中。然后,验证将按照您对ActiveRecord的期望运行,并且不需要条件条件。

代码语言:javascript
复制
class Foo
  include ActiveModel::Model
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36523608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档