自动加载不遵循默认文件名结构的Rails模型

时间:2014-03-25 05:14:08

标签: ruby-on-rails activerecord autoload

简短版本:如何告诉Rails自动加载名为ClassName的ActiveRecord类,该类不在默认位置(app/models/class_name.rb)。例如。如果它在app/models/subdirectory/class_name.rb并且我不想将该类重命名为Subdirectory::ClassName该怎么办?

更长的版本:

我知道,默认情况下,在Rails中,我的类名必须遵循Rails的特定结构才能自动加载它们。

E.g。如果我的班级被称为Person,如果我把它放在app/models/person.rb中,Rails可以加载它,但如果我把它放在例如app/models/person_class.rb中。 Humanity::Person,它不能。如果我命名它,例如app/model/humanity/person,我需要将其放在正确的文件夹lib

(另外,我可以将课程放在app/models中,但我现在暂时搁置这个细节)

到目前为止一切顺利。但是当我有大量的ActiveRecord类堵塞我的{{1}}文件夹并且我想在逻辑上将它们组织到目录中但又不想重命名或命名实际类时会发生什么?我如何告诉Rails自动加载这些类?

或者我有理由不这样做吗?

1 个答案:

答案 0 :(得分:1)

将此行添加到config / application.rb

config.autoload_paths += Dir[Rails.root.join('app', 'models', '{**/}')]

然后你可以使用你的名字,因为它没有名字间距。