validates_uniqueness_of与日期时间

时间:2016-11-07 12:02:02

标签: ruby-on-rails validation datetime ruby-on-rails-4 activerecord

当我想要验证字段并将其范围限定为存储日期时的特定日期时,我似乎偶尔会遇到此问题。

Set NewBook = Workbooks.Add
    With NewBook
    ..openText
    End With

问题是validates_uniqueness_of :user_id, scope: [:starts_at, :state] 存储为starts_at,但我不想验证确切的时间,而是验证日期。

当我遇到这个问题时,我通常会创建一个自定义验证方法,有时候在有时间窗口时这是有道理的,但我想知道我是否会忽略更好的解决方案只关心整个约会。

如果还有另一种可能性,我想避免像下面那样创建自定义验证。

旧路

datetime

由于

1 个答案:

答案 0 :(得分:1)

为此创建自定义验证是相当合理的,但您可以使用exists?代替count / > 0检查,它更具可读性并且完全符合您的要求需要:

def check_user_uniqueness
  if EventLog.where(id: id, user_id: user_id).exists?("start_at::date = ?", start_at.to_date)
    errors.add(:user_id, "isn't available on this date")
  end
end