活动记录的简单Railtie扩展
-
27-09-2019 - |
题
我要创建一个Rails 3.0.3的宝石,它不能获得工作:
# 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
我得到undefined local variable or method 'acts_as_fail'
当我添加acts_as_fail
我的任何ActiveRecord
模型。请帮忙!我非常有这个看似微不足道的代码沮丧!谢谢!
解决方案
您正在定义self.include
(第四线向下),当正确的方法是self.included
。
其他提示
可以通过直接使用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
不隶属于 StackOverflow