Я пытаюсь получить модель для проверки уникальности столбца КОГДА два критерия выполнены - опубликовано верно, а устаревшее - false. Если любая из этих вещей противоположна, не сохраняйте модель. Прямо сейчас, похоже, это предотвращает дубликаты независимо от значений этих столбцов.RoR валидации - условия игнорируются?
У меня есть модель:
Article
-------
name:string
description:string
value:string
value_hash:string
published:bool
deprecated:bool
Вот его класс:
class Article < ActiveRecord::Base
belongs_to :user
validates_presence_of :name, :description, :value
validates_uniqueness_of :checksum, conditions: -> {where(published: true).where(deprecated: false)}, message: "already exists."
before_save :hash_article_value
def hash_article_value
self.checksum = Digest::SHA1.hexdigest(self.value)
end
end
Так что, если Джо спасает статью, и его не опубликован, то Майк сохраняет ту же статью и публикует это должно позволить Майку сделать это. Затем Джо попытается опубликовать одну и ту же статью, и это может привести к ограничению уникальности.
Проблема: Прямо сейчас, если Джо сохраняет неопубликованную статью, Майк не может опубликовать ту же самую статью (не удается ограничить уникальность).
Почему это происходит, когда я указываю условия в validates_uniqueness_of?
Thanks! Это то, что я сделал. – Jeff