Question

Je crée un Rails 3.0.3 bijou et ne peut pas l'obtenir au travail:

# 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 modèles ActiveRecord. Aide s'il vous plaît! Je suis extrêmement frustré par ce code apparemment trivial! Merci!

Était-ce utile?

La solution

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

Autres conseils

Vous pouvez simplifier le code en utilisant directement extend:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top