我正在使用现有模式在遗留SQL Enterprise数据库上构建一个应用程序,但我也希望使用类似但更传统的ActiveRecord模式来支持PostgreSQL。我为每个数据库提供了一组ActiveRecord类,它们抽象了模式差异,并为视图和控制器提供了一个公共接口。我希望能够根据环境/配置在应用程序级别上切换使用的类集。
在任何其他语言中,我都会有一个对象工厂,它使用环境的适当类生成对象。但是我知道这样的模式对ruby来说有点过分了。
如果我有两个类,IssuePg和IssueLegacy,有没有一种方法可以配置我的应用程序,使对Issue.new的调用实例化适当的模型?我知道我可以将类赋值给一个变量,但是我应该在哪里这样做,这样它就是系统范围的,对Rails是不可见的,并与scaffolding兼容,这样我就可以围绕问题搭建脚手架,然后根据环境更改问题超类?
我还需要为每个环境设置一组单独的迁移-您有什么想法?或者这是一个源代码控制问题?
发布于 2013-04-16 20:04:05
可以这样做的一种方法是使用环境或命令行变量,然后执行以下操作:
if Rails.env['db_support'] == :legacy
require '/path/to/legacy/ar/objects'
else
require '/path/to/normal/ar/objects'
end这样就隔离了你的模型,并保持了代码库的整洁。
https://stackoverflow.com/questions/16036162
复制相似问题