Pregunta

Estoy creando una joya Rails 3.0.3 y no puede conseguir que funcione:

# 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

consigo undefined local variable or method 'acts_as_fail' cuando agrego acts_as_fail a cualquiera de mis modelos ActiveRecord. ¡Por favor ayuda! Estoy muy frustrado con este código aparentemente trivial! Gracias!

¿Fue útil?

Solución

Usted está definiendo self.include (cuarta línea hacia abajo), cuando el método correcto es self.included.

Otros consejos

Se puede simplificar el código utilizando directamente 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

Esta es una buena lectura: http://yehudakatz.com/2009/11/12/better-ruby- modismos /

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top