在 MyModel 中,我正在验证这样的:file_id
字段:
validates :file_id, :uniqueness => {:scope => :date_uploaded}
该字段:date_uploaded
是日期时间字段。
有没有办法在:scope
上面指定我希望:file_id
仅在日期时间的日期部分中是唯一的:date_uploaded
?
提前致谢!
在 MyModel 中,我正在验证这样的:file_id
字段:
validates :file_id, :uniqueness => {:scope => :date_uploaded}
该字段:date_uploaded
是日期时间字段。
有没有办法在:scope
上面指定我希望:file_id
仅在日期时间的日期部分中是唯一的:date_uploaded
?
提前致谢!
刚遇到类似的问题。我们想记录事件的日期时间,但只想验证日期的唯一性。最终在 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 的一个很好的替代方案。
我找不到这样做的方法,所以我最终将datetime
字段更改为date
字段。
我知道,这不是最想做的事情,因为它剥夺了将日期转换为不同时区的能力,但在我的情况下仍然有效。