Ruby on rails rails模型文件路径
如何在rails中获取模型文件路径?我想要这样的东西:Ruby on rails rails模型文件路径,ruby-on-rails,ruby,Ruby On Rails,Ruby,如何在rails中获取模型文件路径?我想要这样的东西: MyModel.file_path 预期结果:“/app/models/my_model.rb” 这可以在rails中完成,或者我需要从models name创建文件名并在models目录中找到它?我认为您必须构建它,但这相当简单 下面是: def model_path model_file = self.class.name.split("::").map {|c| c.downcase }.join('/') + '.rb'
MyModel.file_path
预期结果:“/app/models/my_model.rb”
这可以在rails中完成,或者我需要从models name创建文件名并在models目录中找到它?我认为您必须构建它,但这相当简单 下面是:
def model_path
model_file = self.class.name.split("::").map {|c| c.downcase }.join('/') + '.rb'
path = Rails.root.join('app/models/').join(model_file)
end
您可以使用
\uuuuuuuuuuuuuuuuuuuu
引用当前文件路径:
def self.file_path
File.expand_path(__FILE__)
end
或
请注意,Ruby版本对\uuu文件返回的内容很重要。请参阅。[从部分问题改编为更一般的问题]
在一个简单的Rails应用程序中,应用程序的模型类在其app/models
目录中定义,文件路径可以从类名中确定派生。检索此路径的方法可以在特定的模型类MyModel
中定义,如下所示:
classmymodel
def self.file_路径
join('app','models',“#{klass.name.下划线}.rb”)。到
结束
结束
例如,这个特定的模型类MyModel
将在APP_ROOT/APP/models/my_model.rb
中定义,其中APP_ROOT
是应用程序的根目录路径
泛化这一点,可以在所有模型类中定义这种方法,并考虑简单的Rails路径配置的扩展。在定义模型定义自定义路径的Rails应用程序中,必须考虑所有这些路径。而且,由于任意模型类可以在由应用程序加载的任何Rails引擎中定义,所以必须还要查看所有加载的引擎,并考虑它们的自定义路径
模块活动记录
阶级基础
def self.file_路径
候选项=Rails.application.config.path['app/models'].map do | model_root|
join(model_root,“#{name.下划线}.rb”)。到
结束
候选项+=Rails::Engine::Railties.engines.flat|map do|Engine|
engine.path['app/models'].map do | model_root|
join(model_root,“#{name.下划线}.rb”)。到
结束
结束
candidates.find{| path | File.exist?(path)}
结束
结束
结束
为了让Rails应用这个猴子补丁,需要在config/initializers/active\u record.rb中使用它
是的,我知道这种方法,但我希望它已经在子文件夹中的railsWorks中实现,除非您定义自己的加载路径,而不使用正常的类名称空间文件夹结构。
def self.file_path
__FILE__
end