Ruby on rails 我想知道如何在开发环境中强制加载模型

Ruby on rails 我想知道如何在开发环境中强制加载模型,ruby-on-rails,class,Ruby On Rails,Class,我想知道如何在开发环境中强制加载模型。(第2.3.10条) 当我处于测试或开发模式时,一些项目在使用之前是不会启动的。以下是控制台的说明: > project = Project.find(:some) RuntimeError: Can not find 'some' from /path/to/rails/lib/identifier.rb:23:in `class_from_key' from /path/to/rails/lib/identifi

我想知道如何在开发环境中强制加载模型。(第2.3.10条)

当我处于测试或开发模式时,一些项目在使用之前是不会启动的。以下是控制台的说明:

>   project = Project.find(:some)
    RuntimeError: Can not find 'some'
      from /path/to/rails/lib/identifier.rb:23:in `class_from_key'
      from /path/to/rails/lib/identifier.rb:8:in `find'
      from (irb):4
> Projects::SomeProject
  => Projects::SomeProject 
> project = Project.find(:some)
  => #<Projects::SomeProject:0x10810ceb8 @key="some", @full_name="Some Project"> 
但这恰恰消除了发展的好处

关于确保所有子类都自动加载的好方法,有什么想法吗

代码详细信息 我有一个
项目
课程

class Project
  extend Identifier

  def full_name
    @full_name
  end

  def key
    @key
  end

end
这是更具体的项目类的基类

class Projects::SomeProject < Project
  identifier :some

  def initialize
    @key = 'some'
    @full_name = "Some Project"
  end
end

补充一句可能没什么坏处

require 'some_project'
如果您有这样的需求,请在文件的顶部

module Identifier

  def find(*args)
    key = args.shift
    klass = class_from_key(key)
    if args.empty?
      klass.new 
    else 
      klass.new args
    end
  end

  private 

  def class_from_key(key)
    raise "Can not find '#{key}'" unless identifiers.has_key?(key)
    identifiers[key] 
  end

  def identifiers
    @@identifiers ||= {}
  end

  def identifier(key)
    identifiers[key] = self
  end

end
require 'some_project'