Frage

Ich bin ein Rails 3.0.3 Juwel zu schaffen und kann nicht an der Arbeit:

# 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 Hilfe! Ich bin sehr zufrieden mit diesem scheinbar trivialen Code frustriert! Dank!

War es hilfreich?

Lösung

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

Andere Tipps

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

# 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- Idiome /

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top