Changeset 23
- Timestamp:
- 04/03/06 15:39:46 (3 years ago)
- Files:
-
- trunk/plugin/acts_as_ferret/lib/acts_as_ferret.rb (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/plugin/acts_as_ferret/lib/acts_as_ferret.rb
r20 r23 176 176 include FerretMixin::Acts::ARFerret::InstanceMethods 177 177 178 before_update :ferret_before_update 179 after_create :ferret_create 180 after_update :ferret_update 178 before_create :ferret_before_create 179 before_update :ferret_before_update 180 after_create :ferret_create 181 after_update :ferret_update 182 181 183 after_destroy :ferret_destroy 182 183 184 184 185 cattr_accessor :fields_for_ferret … … 404 405 module InstanceMethods 405 406 include Ferret 406 @fields_for_ferret_tainted = false 407 attr_reader :fields_for_ferret_tainted 408 @fields_for_ferret_tainted = true 407 409 408 410 # check to see if there are any changes relevant to the ferret index 409 411 def ferret_before_update 410 res = true 411 current = self.class.find(self.id) 412 if fields_for_ferret && current 412 @fields_for_ferret_tainted = true 413 if self.id && fields_for_ferret 414 res = true 415 current = self.class.find(self.id) 413 416 fields_for_ferret.each do |field| 414 417 res = res && (self.send(field) == current.send(field)) 415 418 end 416 419 @fields_for_ferret_tainted = !res 417 else418 @fields_for_ferret_tainted = true419 420 end 420 421 logger.debug "fields_for_ferret_tainted(before_update): #{@fields_for_ferret_tainted}" 421 422 true 422 423 end 424 alias :ferret_before_create :ferret_before_update 423 425 424 426 # add to index 425 427 def ferret_create 428 logger.debug "ferret_create/update: #{self.class.name} : #{self.id}" 429 self.class.ferret_index << self.to_doc if @fields_for_ferret_tainted 426 430 logger.debug "fields_for_ferret_tainted(create): #{@fields_for_ferret_tainted}" 427 if @fields_for_ferret_tainted 428 self.class.ferret_index << self.to_doc 429 logger.debug "ferret_create/update: #{self.class.name} : #{self.id}" 430 end 431 @fields_for_ferret_tainted = false 431 @fields_for_ferret_tainted = true 432 true 432 433 end 433 434 alias :ferret_update :ferret_create … … 440 441 logger.warn("Could not find indexed value for this object") 441 442 end 443 true 442 444 end 443 445
