在MyModel中,我正在验证:file_id
字段,如下所示:
validates :file_id, :uniqueness => {:scope => :date_uploaded}
字段:date_uploaded
是日期时间字段。
有没有办法在上面的:scope
中指定我希望:file_id
仅对:date_uploaded
中日期时间的日期部分唯一?
提前致谢!
答案 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
字段。
我知道,这不是最需要做的事情,因为它会将日期转换为不同的时区,但仍然适用于我的情况。