我有几个不同的acts_as _...自定义类的方法我想在我的应用程序中使用。我希望这些方法的代码位于app/modules目录中的文件中。如何从应用程序/模块扩展ActiveRecord?
我一直无法得到这个工作。
举例来说,我有一个文件:应用程序/模块/ acts_as_lockable
module ActsAsLockable
def acts_as_lockable
before_create :set_lock
include InstanceMethods
end
module InstanceMethods
protected
def set_lock
now = Time.now.to_s
self.lock = Digest::SHA1.hexdigest(now)
end
end
end
ActiveRecord::Base.extend ActsAsLockable
而且在application.rb中
config.autoload_paths += %W(#{config.root}/app/modules)
当我尝试加载调用acts_as_lockable我得到的一个模型以下错误:
NameError: undefined local variable or method `acts_as_lockable'
我的猜测是我不应该自动加载模块文件夹bec当我扩展ActiveRecord时,它已经被加载了吗?有没有另一种方法来做到这一点?我希望能够在开发过程中更改文件,而不必重新启动服务器,但这更多是需要的。
谢谢你的魅力。我意识到这可能不是最实际的解决方案,但出于某种原因,我讨厌在我的模型中看到包含声明。 – tanman 2011-06-09 21:40:13