2013-02-21 2 views
0

모델에 일련 화 된 필드가 있는데이 필드의 고유성을 검사하려고 시도하면 작동하지 않습니다. (스틸이 응용 프로그램에 레일 2.3)Rails 2.3. serialization 된 필드의 validates_uniqueness_of

응용 프로그램/모델/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 

그러나, 액티브 레코드 콜백 순서에보고 한 기본 값이 전무하기 때문에 항상 유효합니다 그래서 before_save는 확인 후 을 실행하고 그 후는 새로운 콘텐츠 해시에 업데이트됩니다.

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

은 어쩌면 내가, 바로이 어떤 해결책을 생각하고 있지 않다?

미리 감사드립니다.

답변

1

이 시도 :

before_validation :update_content_hash 
관련 문제