我需要创建一个新的rails应用程序,它将使用现有的外部Microsoft SQL Server数据库作为其主数据库。此DB正在我需要连接的外部服务器上运行。在这里我工作的是一个单独的DB Admins部分,所以我不确定我需要执行哪些步骤。我认为简单的部分是连接到服务器并设置应用程序以使用该数据库。但在那之后我感到困惑。
我应该创建数据库转储和迁移吗?
我应该添加模型来表示现有的数据库结构吗?
如果我需要在db中创建新模型和表...
我应该从rails生成器生成其模型并在db上运行迁移,还是联系数据库管理员来创建表,然后手动指定应用程序内的模型? < - 这让我很困惑
提前谢谢你,对不起我的英语! :)
修改!! - > The Rails Way
我找到了另一种集成多个数据库数据的好方法......你可以定义一个模型并指定它所在的数据库(所以数据库连接永远不会关闭)......这绝对是 The Rails Way 应该遵循......
这是一个不错的啧啧: Multiple Databases in Rails
TL; DR
定义模型并指定其数据库和表名
Class ExternalDatabaseModel < ActiveRecord::Base
establish_connection(:secondary_db)
self.table_name = "the_table"
self.primary_key = 'someWeirdIDColumn'
end
然后使用任何其他rails模型,指定关系等等:)
希望对某人有帮助!
答案 0 :(得分:0)
我建议你看一下tiny tds gem:https://github.com/rails-sqlserver/tiny_tds。配置和使用它真的很有用......您可以使用它来连接外部sql server db并进行所需的查询。不知道您正在使用哪种类型的系统,但如果您不断检索数据,则外部请求可能会使您的系统变慢。根据您的应用程序,您可以考虑同步数据,使本地数据库变得多余。希望它对你有所帮助,祝你好运!
编辑:关于模型部分:如果您每次需要时都要从该sql服务器检索数据,那么您不需要在本地存储它。但是,如果您正在进行冗余,则应该创建具有您需要的属性的模型,而不是从服务器检索时,将其保存为正常,只是将值归因于模型并调用save!
方法。