Activerecord 从迁移中获取文件的完整路径

Activerecord 从迁移中获取文件的完整路径,activerecord,ruby-on-rails-3.2,migration,ruby-1.8.7,Activerecord,Ruby On Rails 3.2,Migration,Ruby 1.8.7,我需要在迁移期间将文件内容插入数据库(Rails 3.2.13)。引用项目中其他地方的文件的正确方法是什么 db/migrate/the_migration.rb class ... content = File.read("../../app/views/layours/application.html.erb") end 相对路径似乎不起作用-我得到: No such file or directory - ../../app/views/layouts/application.htm

我需要在迁移期间将文件内容插入数据库(Rails 3.2.13)。引用项目中其他地方的文件的正确方法是什么

db/migrate/the_migration.rb

class ...
  content = File.read("../../app/views/layours/application.html.erb")
end
相对路径似乎不起作用-我得到:

No such file or directory - ../../app/views/layouts/application.html.erb

如何将此路径映射到绝对路径?

您可以尝试以下代码:

class ...
  path = File.expand_path('../../app/views/layouts/application.html.erb', __FILE__)
  content = File.read(path)
end

假设您正在使用rake应用活动记录迁移。文件路径将与您启动rake的位置相关,我确信它将是项目的根

文件路径应为:


content=File.read(“app/views/layouts/application.html.erb”)

它工作正常,只是出于某种原因,我不得不上三个目录,而不是两个。不知道为什么会这样。我不是这样。我在根项目路径上使用rake,我必须上三层才能到达
/app
。如果你说的是真的,我应该只使用路径
/app/views/…
。如果有必要的话,我正在使用AptanaStudio/Eclipse,并在Eclipse的控制台中运行rake。我不确定Eclipse控制台。您不想使用“/app/viwes/”,您可能希望“app/views/”不带第一个斜杠。如果您创建了一个虚拟迁移,并在迁移运行时将puts Dir.pwd添加到顶部,您应该知道它从哪个目录运行。是的,第一个
/
是我在SO的编辑期结束后注意到的一个打字错误(谢谢。