2010-05-08 36 views
0

的使用情况很简单。的Rails 2.3.5:如何处理这种类型的验证

我允许用户在需要在1和15之间的是成一种期满字段中输入。该模型获取该数字并将其转换为日期时间(例如从今天起增加15天)并将其存储在数据库中。

什么是实际验证,虽然正确的方法是什么?我是否根据持续存在于数据库中的日期时间格式或用户可通过表单选择的选择框(1..15)进行验证?我希望能够验证用户正在使用1..15 .. Rails 2.3.5中的ActiveRecord验证如何完成?

如果我只是创建基于整数到期领域的attr_accessor和验证对吗?这样做的干净方式是什么?

回答

4

我想你有这样的

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 
+0

+1很好的答案。 – Salil 2010-05-08 16:23:43

+0

您可能刚刚使用validates_inclusion_of而不是expiration_correctness; convert_date应该检查expiration_num是否为空。 – vise 2010-05-09 09:53:44

相关问题