如何在Rails应用程序中禁用迁移function?

背景

我们分别设计数据库模型和应用程序模型(RDMBS架构师与OOP工程师)。 从我所看到的Rails与域/密钥正常forms相比,Rails迁移不能轻易复制精心设计的企业RDBMS的所有function(如果有的话),因此我们不迁移,而是使用其他工具来构建数据库(没关系对象 – 关系阻抗不匹配的问题)。 对于我们来说,数据完整性和数据库性能对于冒任何开发人员更改RDBMS模型的风险来说太宝贵

无论出于何种原因,我们现在都有一个Rails应用程序,它通过迁移破坏了数据库更改。 如何在现有Rails应用程序中干净地禁用此function?

我有我的理论,但我想知道世界的想法。

当测试最终出现在前面时,这又出现了。 因此,我深入了解并提出以下感谢,部分原因是对问题的评论。 这将删除所有rake DBfunction,测试仍可正常运行。 (如果有人想知道,当我们需要刷新它时,我们会从其他地方克隆测试数据库。)

将其添加到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 

注释掉test/test_helper.rb所有灯具:

 #fixtures :all 

在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 

创建模型时,可以像这样附加--no-migration选项: rails g model abc --no-migration