首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >活动记录的简单Railtie扩展

活动记录的简单Railtie扩展
EN

Stack Overflow用户
提问于 2010-11-23 15:24:51
回答 2查看 1.7K关注 0票数 0

我正在创建一个Rails 3.0.3 gem,但无法让它工作:

代码语言:javascript
复制
# 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'。请帮帮我!我对这些看似微不足道的代码感到非常沮丧!谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-23 17:00:24

当正确的方法是self.included时,您正在定义self.include (第4行)。

票数 4
EN

Stack Overflow用户

发布于 2010-11-23 18:29:59

您可以通过直接使用extend来简化代码:

代码语言:javascript
复制
# 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/

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4253694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档