2010-11-23 7 views
0

ich ein Rails 3.0.3 Juwel zu schaffen und kann nicht an der Arbeit:Einfache Railtie Erweiterung der 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 

ich undefined local variable or method 'acts_as_fail' wenn ich acts_as_fail jedem meiner ActiveRecord Modelle hinzufügen. Bitte helfen Sie! Ich bin extrem frustriert über diesen scheinbar trivialen Code! Vielen Dank!

Antwort

4

Sie definieren self.include (4. Zeile nach unten), wenn die korrekte Methode self.included ist.

+0

Selbst Gesicht Palme ... Danke so viel Ryan! –

3

können Sie den Code vereinfachen, indem extend direkt mit:

# 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 

Dies ist ein gutes Buch: http://yehudakatz.com/2009/11/12/better-ruby-idioms/