У меня есть поле в модели, которая сериализована, и когда я пытался проверить ее уникальность, она не работает. (Тем не менее на Rails 2.3 этого приложения)Рельсы 2.3. validates_uniqueness_ в сериализованном поле
приложения/модель/foo.rb
class foo < ActiveRecord::Base
serialize :rules
validates_uniqueness_of :rules
end
Я попытался сохранить содержимое в поле хэша вместо и проверить уникальность контента хэша-в. Затем я столкнулся с другой проблемой порядка обратных вызовов.
require 'digest/md5'
class foo < ActiveRecord::Base
before_save :update_content_hash
validates_uniqueness_of :content_hash
def update_content_hash
self.content_hash = OpenSSL::Digest::SHA1.hexdigest(self.rules.flatten)
end
end
Однако, посмотрев на того, Active Record обратных вызовов, before_save выполняется после проверки, поэтому он всегда будет действовать так как значение по умолчанию равно нулю, и после того, что он обновляется до нового контента хэш.
http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html
Может быть, я не соображал, любое решение этой проблемы?
Большое спасибо заранее.