在MyModel中,我像这样验证:file_id
字段:
validates :file_id, :uniqueness => {:scope => :date_uploaded}
字段:date_uploaded
是一个日期时间字段。
是否有一种方法可以在上面的:scope
中指定我希望:file_id
仅对:date_uploaded
中的日期时间的日期部分是唯一的?
提前感谢!
刚刚遇到了类似的问题。我们想记录事件的日期时间,但只想验证日期的唯一性。最终在模型中做了一个before_create方法。rb文件:
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
字段。
我知道,这不是最理想的事情,因为它剥夺了将日期转换为不同时区的能力,但在我的情况下仍然有效。