我正在创建一个Rails 3.0.3 gem,但无法让它工作:
# 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当我将acts_as_fail添加到我的任何ActiveRecord模型中时,我都会得到undefined local variable or method 'acts_as_fail'。请帮帮我!我对这些看似微不足道的代码感到非常沮丧!谢谢!
发布于 2010-11-23 17:00:24
当正确的方法是self.included时,您正在定义self.include (第4行)。
发布于 2010-11-23 18:29:59
您可以通过直接使用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这是一个很好的读物:http://yehudakatz.com/2009/11/12/better-ruby-idioms/
https://stackoverflow.com/questions/4253694
复制相似问题