我在控制器中有一些行为,为了更好地测试并在几个地方重用它,我把它拉到一个模块中。关于这一点,有两个问题:
config/initializers/目录。不过,我觉得有点可疑。lib/include可以在控制器中使用这些模块?谢谢各位先生。
发布于 2010-10-16 13:03:05
lib/对于模块来说是一个很好的地方;比config/initializers/好得多--至少在我看来是这样的。如果它是几个模块,或者一个大模块,您也可以考虑将它作为一个插件,并将其放在vendor/plugins中。如果您将其放入lib/目录中自动加载文件。您可以将需求放在您的一个配置文件中.我通常把我的附加自动加载到config/application.rb中。类似这样的操作应该可以做到(假设您的.rb文件位于一个名为lib/my_module的目录中):
config.autoload_paths += Dir["#{Rails.root}/lib/my_module"]您必须确保您的模块是实际的module,而不是class。然后,您可以简单地将其包括在内:
# lib/my_module/foobar.rb
module Foobar
def foobar
"Hello world!"
end
end
# app/models/my_model.rb
class MyModel < ActiveRecord::Base
include Foobar
end
# rails console
>> obj = MyModel.first
=> #<MyModel id: 1, ...>
>> obj.id
=> 1
>> obj.foobar
=> "Hello world!"https://stackoverflow.com/questions/3945124
复制相似问题