我有一个名为Calendar
.
将应用于它的验证因用户所做的选择而异。
我知道我可以使用自定义验证+条件验证来执行此操作,但对我来说看起来不太干净。
我想知道是否可以将其存储在数据库列上并将其传递给“通用”验证器方法。
你怎么认为?
进一步解释:
用户有一个日历。
有权访问此日历的其他用户可以安排约会。
要安排约会,应用程序应根据日历所有者定义的规则进行验证。
有很多种组合,所以我得出的是:
为每个可能的验证创建自定义验证器类,然后设置条件。
class Calendar
validate_allowed_in_hollydays :appointment_date if :allowedinhollydays?
(tenths of other cases)
...
end
这可行,但感觉不对。
我正在考虑将哪些规则应该应用于该日历存储在某个地方,然后执行以下操作:
validate_stored_rules :appointment_date
将数据保存在数据库中然后进行验证似乎有点倒退。
我认为您最初想到进行一些自定义验证是最好的选择。 validates_with 看起来是你最好的选择。然后,您可以创建一个单独的类并在其中构建所有验证,以使其与主模型分开。
class Person < ActiveRecord::Base
validates_with GoodnessValidator
end
class GoodnessValidator < ActiveModel::Validator
def validate
if record.first_name == "Evil"
record.errors[:base] << "This person is evil"
end
end
end
代码直接从Rails 验证指南 http://guides.rubyonrails.org/active_record_validations_callbacks.html#validates_with
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)