【发布时间】:2014-11-18 13:24:46
【问题描述】:
我有一个名为 Person 的模型。
class Person < ActiveRecord::Base
validate_presence_of :name
validate :check_card_number
def check_card_number
errors.add(:card_number, "Card Number can't be blank") if card_number.blank?
-----
# some other stuffs here
----
end
end
如果我调用下面的方法,我会得到验证器类名
Person.validators_on(:name) => [ActiveModel::Validations::PresenceValidator]
但对于
Person.validators_on(:card_number) => []
如何检查我正在验证卡号是否存在?
【问题讨论】:
-
尝试为 card_number 验证器方法使用与
card_number不同的名称,因为 card_number 用于访问 Person 模型的 card_number 字段。 -
为什么要使用自定义验证器进行存在检查,还是仅用于示例?
-
您的 card_number 方法似乎在调用自己。
card_number是模型数据库表中的字段吗?如果是这样,那么此方法将覆盖它的“getter”,我认为您不想这样做。如果您想使用自定义验证,请为其命名。 -
@Anand 是的,实际上自定义方法名称是 check_card_number,我用这个更新了 Qn。
-
@MohammadAbuShady 是的,因为我正在 check_card_number 自定义方法中检查与卡号相关的其他内容(例如:card_number 已经存在,然后添加一些自定义错误,将 card_number 与其他参数值进行比较等),并且还有其他代码。
标签: ruby-on-rails ruby ruby-on-rails-3.2 rails-activerecord