【问题标题】:Rails 2.3.5: How to handle this type of validationRails 2.3.5:如何处理这种类型的验证
【发布时间】:2011-02-17 04:39:32
【问题描述】:

用例很简单。

我允许用户在表单中输入 1 到 15 之间的过期字段。模型获取该数字并将其转换为日期时间(例如从今天开始添加 15 天)并将其存储在数据库中。

实际验证的正确方法是什么?我是否针对数据库中持久保存的日期时间格式或用户通过表单选择的选择框 (1..15) 进行验证?我希望能够验证用户是否输入了 1..15.. 如何在 Rails 2.3.5 中使用 ActiveRecord 验证?

我是否应该为基于整数的过期字段创建一个 attr_accessor 并对其进行验证?这样做的干净方法是什么?

【问题讨论】:

    标签: ruby-on-rails activerecord


    【解决方案1】:

    我想你有这样的代码

    attr_accessor :expiration_num
    before_save :convert_date
    
    def convert_date
      self.expiration = self.expitration_num.days.since
    end
    

    所以只需像这样添加一个验证方法:

    validate :expiration_correctness
    
    def expiration_correctness
      errors.add_to_base("Must be in 1-15") unless (1..15).include? self.expiration_num
    end
    

    【讨论】:

    • 你可以使用 validates_inclusion_of 而不是 expiration_correctness; convert_date 应该检查 expiration_num 是否为空。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多