Rails 2.3。 validates_uniqueness_of序列化字段

时间:2013-02-21 16:38:21

标签: ruby-on-rails serialization validates-uniqueness-of

我在一个序列化的模型中有一个字段,当我试图验证它的唯一性时,它不起作用。 (仍然在这个应用程序的Rails 2.3上)

应用程序/模型/ 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回调顺序后,在验证后执行了之前的on_save,因此它始终有效,因为默认值为nil,之后它更新为新的内容哈希。

http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html

也许我没有直接思考,任何解决方案?

非常感谢提前。

1 个答案:

答案 0 :(得分:1)

试试这个:

 before_validation :update_content_hash