Ruby和Rails:在不迁移的情况下向模型添加列

时间:2014-11-07 16:49:49

标签: ruby-on-rails ruby

这里有很多关于通过rails迁移文件和rake db:migrate向模型添加列的问题。

但是,在这种情况下,应用程序基本上是由另一个应用程序生成的现有SQL Server数据库之上的CRUD。也就是说,我不控制它。那些控制数据库的人已经在表中添加了几列。

我需要的是Rails应用程序尊重对数据库所做的更改,而不假设它完全控制表结构。

我已经尝试将新字段插入到模型和控制器文件中,但是sql查询会给出TinyTDS错误,说明新字段不存在。手动查询(通过SQL Server Management Studio)工作正常。我错过了什么?当Rails出现在表模型中时,为什么不识别新字段?

更新:

事实证明,问题比我在询问初始问题时更微妙。作为背景,该应用程序设置有两个数据库,一个生产,一个开发/测试。它们都在同一个SQL Server数据库服务器上。丢失列的实际情况是,无论我使用什么环境,Rails应用程序都会从​​生产中获取。即使我将两个环境都更改为使用相同的开发数据库(在database.yml中),该应用程序仍继续查询生产数据库。

这可能是Rails和SQL Server之间的问题。我已经清除了所有缓存并清除了所有数据库连接,但它没有任何区别。似乎Rails应用程序正在某处缓存数据库名称和登录信息。

有一天,我想解决这个问题,但现在我只需将开发数据库移到另一台服务器进行测试。

1 个答案:

答案 0 :(得分:0)

ActiveRecord作为表字段的缓存。如果要在不重新启动应用程序的情况下重置模型的缓存,可以执行以下操作:

MyModel.reset_column_information