jua*_*gan 2 oop database-design ruby-on-rails rails-migrations rails-activerecord
背景
我们分别设计数据库模型和应用程序模型(RDMBS架构师与OOP工程师)。从我看到的关于Rails与域/密钥常规格式的关系来看,Rails迁移无法轻易复制设计良好的企业RDBMS的所有功能(如果有的话),因此我们不进行迁移,而是使用其他工具来构建数据库(永远不要介意对象关系阻抗不匹配的问题。数据完整性和数据库性能对我们来说太有价值,以至于任何开发人员都无法冒险更改RDBMS模型。
题
无论出于何种原因,我们现在都有一个Rails应用程序,该应用程序通过迁移进行了有害的数据库更改。如何在现有的Rails应用程序中彻底禁用此功能?
我有自己的理论,但我想知道世界的想法。
当测试终于来到最前沿时,这一点又出现了。因此,我进行了更深入的研究,并提出了以下以下感谢,部分感谢对问题的评论。这将删除所有rake DB功能,并且测试仍然可以正常运行。(以防万一,我们需要从其他地方克隆测试数据库。)
将此添加到Rakefile:
# Disable DB migrations, DB test preparing, etc.
Rake::Task.tasks.each do |t|
if t.name[0,3] == "db:"
t.clear
t.add_description("!!! Disabled in favor of enterprise design at Acme.")
end
end
Run Code Online (Sandbox Code Playgroud)
注释掉以下所有装置test/test_helper.rb:
#fixtures :all
Run Code Online (Sandbox Code Playgroud)
在 juanitogan 的回答中,我们禁用所有数据库任务。就我而言,我仍然希望能够跑步db:schema:load。这里稍微修改一下代码Rakefile:
# Disable migrations
Rake::Task.tasks.each do |t|
if t.name.start_with?("db:migrate")
t.clear
t.add_description("Disabled; Load the data model via db:schema:load.")
t.actions << proc { puts "Migrations ignored. That's ok. Please see README."}
end
end
Run Code Online (Sandbox Code Playgroud)
创建模型时,您可以附加--no-migration选项,如下所示:rails g model abc --no-migration