Grettings!

In an app that was working flawlessly in Rails 2.3.8 i have the
following class method:

    def self.encode(*attr_names)
      encoder = Encoder.new(attr_names)
      before_save encoder
      after_save encoder                        
      after_find encoder
      define_method(:after_find) { } # defining here, since there's
only alias in the Encoder class itself
    end


This method references the Encoder class. Here is it:

    class Encoder
      include Encodings 
        
      def initialize(attrs_to_manage) # We're passed a list of
attributes that should be stored encoded in the database
        @attrs_to_manage = attrs_to_manage
      end
        
      def before_save(model) # Before saving or updating, encode the
attributes to their original encoding
        @attrs_to_manage.each do |field|
          model[field] = to_orig_encod(model[field])
        end
      end
        
      def after_save(model)     # After saving, encode them back to utf8
        @attrs_to_manage.each do |field|
          model[field] = to_utf8(model[field])
        end
      end
        
      alias_method :after_find, :after_save # Do the same after
finding an existing record
    end

Before the upgrade to rails3 all the callbacks (before_save,
after_save, after_find) worked fine. After the upgrade *before_save*
and *after_save* still work, but *after_find* does not and I get the
following deprecation warning in my log:

    DEPRECATION WARNING: Base#after_find has been deprecated, please
use Base.after_find :method instead

I'm uncertain how to change my code in order to re-enable the
functionality of the after_find callback. I tried a few simple
alternations with no success and the rails API documentation on this
callback is very limited and without examples of implementation.

Any help appreciated, thanks in advance!

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to