Rails 3在启动时加载所有模型

jan*_*hii 12 ruby-on-rails

我有一个类方法混合到我的所有模型中.在计算模型类时调用该方法.不幸的是(对我来说),只要模型在开发环境中需要,这似乎是按需的.怎么可以让铁轨在启动时加载所有型号?这是否可取?

class Foo < ActiveRecord::Base
  include Acl
  register_acl # i need this to be called for all models at start up
end
Run Code Online (Sandbox Code Playgroud)

基本上,register_acl采用模型希望访问控制的"动作"的一些参数.假设Foo的一个动作是"管理",系统需要在启动时意识到这个动作.我认为在模型中是拥有这种逻辑的最自然的地方.

谢谢!

sj2*_*j26 18

在应用程序范围内执行此操作的正确方法是cache_classes在您的配置中打开.默认情况下,它在开发中处于关闭状态,但在生产中.

如果你想偶尔这样做:

Rails.application.eager_load!
Run Code Online (Sandbox Code Playgroud)


jan*_*hii 6

我不知道这是否理想,但它对我有用.在config/initialize /的某处,我这样做:

Dir.glob("#{Rails.root}/app/models/*.rb").sort.each { |file| require_dependency file }
Run Code Online (Sandbox Code Playgroud)

并预加载我的模型