基于日期时间字段中的日期进行唯一性验证

时间:2013-03-04 15:42:15

标签: ruby-on-rails validation datetime

在MyModel中,我正在验证:file_id字段,如下所示:

validates :file_id, :uniqueness => {:scope  => :date_uploaded}

字段:date_uploaded是日期时间字段。

有没有办法在上面的:scope中指定我希望:file_id仅对:date_uploaded中日期时间的日期部分唯一?

提前致谢!

2 个答案:

答案 0 :(得分:1)

刚遇到类似的问题。我们想要记录事件的日期时间,但只想验证日期的唯一性。结束了在model.rb文件中执行before_create方法:

before_create :check_date_uniqueness

def check_date_uniqueness
   if Model.where(:datetime => self.datetime.to_date.beginning_of_day..self.datetime.to_date.end_of_day).exists?
     return false
   else
     return true
   end
end

根据您的具体型号,这样的东西可能是验证中构建的rails的一个很好的替代方案。

答案 1 :(得分:-1)

我找不到办法执行此操作,因此我最终将datetime字段更改为date字段。

我知道,这不是最需要做的事情,因为它会将日期转换为不同的时区,但仍然适用于我的情况。