2010-11-23 5 views
0

Je crée un petit bijou Rails 3.0.3 et ne peut le faire fonctionner:Railtie Extension de Active Record

# attached.rb 
module Attached 
    require 'attached/railtie' if defined?(Rails) 
    def self.include(base) 
    base.send :extend, ClassMethods 
    end 
    module ClassMethods 
    def acts_as_fail 
    end 
    end 
end 

# attached/railtie.rb 
require 'attached' 
require 'rails' 

module Attached 
    class Railtie < Rails::Railtie 
    initializer 'attached.initialize' do 
     ActiveSupport.on_load(:active_record) do 
     ActiveRecord::Base.send :include, Attached 
     end 
    end 
    end 
end 

je reçois undefined local variable or method 'acts_as_fail' quand j'ajoute acts_as_fail à l'un de mes ActiveRecord modèles. S'il vous plaît aider! Je suis extrêmement frustré par ce code apparemment trivial! Merci!

Répondre

4

Vous définissez self.include (4ème ligne vers le bas), lorsque la méthode correcte est self.included.

+0

auto visage paume ... Merci beaucoup Ryan! –

3

Vous pouvez simplifier le code en utilisant extend directement:

# attached.rb 
module Attached 
    require 'attached/railtie' if defined?(Rails) 
    def acts_as_fail 
    end 
end 

# attached/railtie.rb 
require 'attached' 
require 'rails' 

module Attached 
    class Railtie < Rails::Railtie 
    initializer 'attached.initialize' do 
     ActiveSupport.on_load(:active_record) do 
     ActiveRecord::Base.send :extend, Attached 
     end 
    end 
    end 
end 

Ceci est une bonne lecture: http://yehudakatz.com/2009/11/12/better-ruby-idioms/

Questions connexes