2
私はdatetimeを格納しているときに特定の日付にフィールドとスコープを検証したいときに、時々この問題が発生するようです。validates_uniqueness_of with datetime
validates_uniqueness_of :user_id, scope: [:starts_at, :state]
問題がstarts_at
はdatetime
として格納されているが、私は正確な時間ではなく、一般的な日付を検証する必要はありません。
この問題が発生したときは、通常、カスタム検証方法を作成します。時には時間枠がある場合には意味がありますが、日付全体のみを気にすると、 。
別の可能性がある場合は、以下のようなカスタム検証を作成しないようにしたいと思います。
古い方法
def check_user_uniqueness
if EventLog.where("start_at::date = ? AND id <> ? AND user_id = ?",
start_at.to_date, id, user_id).count > 0
errors.add(:user_id, "isn't available on this date")
end
end
おかげ
私はこれについて**カスタム検証**と考えることができます。 'starts_at'が** date(datetimeでない)**の場合、' validates_uniqueness_of'で達成できます。 – Pavan