J'ai un champ dans un modèle qui est sérialisé et quand j'ai essayé de valider l'unicité de celui-ci, cela ne fonctionne pas. (Toujours on Rails 2.3 sur cette application)Rails 2.3. validates_uniqueness_of un champ sérialisé
app/modèles/foo.rb
class foo < ActiveRecord::Base
serialize :rules
validates_uniqueness_of :rules
end
J'ai essayé de stocker le contenu dans un champ de hachage au lieu et valider l'unicité du hachage de contenu. Puis j'ai couru vers un autre problème de l'ordre des rappels.
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
Cependant, après avoir examiné l'ordre de callbacks Active Record, before_save est exécuté après validation, il sera toujours valable parce que la valeur par défaut est nul et après qu'il a mis à jour le nouveau hachage contenu.
http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html
Peut-être que je ne pense pas droit, une solution à cela?
Merci beaucoup à l'avance.