Sql server 如何在Rails中连接到MS SQL
我正在尝试将遗留数据从MS SQL数据库迁移到Rails应用程序中。我在freetds中添加了正确连接的配置。在我的Gemfile中,我分别添加了和 我已经创建了一个文件来存放遗留数据库中的类,以便转换为ActiveRecord:Sql server 如何在Rails中连接到MS SQL,sql-server,rails-activerecord,ruby-on-rails-4,freetds,legacy-database,Sql Server,Rails Activerecord,Ruby On Rails 4,Freetds,Legacy Database,我正在尝试将遗留数据从MS SQL数据库迁移到Rails应用程序中。我在freetds中添加了正确连接的配置。在我的Gemfile中,我分别添加了和 我已经创建了一个文件来存放遗留数据库中的类,以便转换为ActiveRecord: class LegacyUser < ActiveRecord::Base establish_connection :legacy set_table_name 'users' end . . . 然后我有rake任务来转换数据: legacy
class LegacyUser < ActiveRecord::Base
establish_connection :legacy
set_table_name 'users'
end
.
.
.
然后我有rake任务来转换数据:
legacy.rake
desc 'migrate users'
task :users => :environment do
require 'lib/tasks/legacy_classes'
LegacyUser.each do |user|
begin
new_user = User.new
new_user.attributes = {
:firstname => user.firstname,
:lastname => user.lastname,
:email => user.email,
:created_at => Time.now,
:updated_at => Time.now
}
new_user.save!
puts "User #{user.id} successfully migrated"
rescue
puts "Error migrating #{user.id}"
end
end
此时,我正试图让rake任务“连接”到遗留数据库
当我尝试“rake用户”时,我得到:
rake aborted!
database configuration does not specify adapter
在我看来,我已经明确指定了适配器。正确的配置方法是什么
另一个附带问题是,在我的遗留数据库表的“类”文件中,所有这些表是否都应该镜像“新的”Rails数据库模式?理想情况下,我希望能够简单地连接到遗留数据库中的各种表,并在需要时将它们放入新的数据库模式中。旧的关联与新的关联不匹配,命名约定也不匹配
感谢您的帮助。谢谢
更新
仍在经历此错误。遗憾的是,我能找到的唯一有相同错误的线程是database.yml文件中的奇数间隔问题。所以我实际上花了时间来检查并确保所有的间距与我的其他配置相匹配。考虑到这是一个模糊的错误,我甚至不确定在设置activerecord sqlserver适配器的说明之前要检查什么。这里有一个答案: '您可以尝试像这样连接到您的DB,这在Rails 4的分支上对我们有效:'
class LegacyTable < ActiveRecord::Base
establish_connection({
:adapter => "sqlserver",
:host => "host",
:username => "user",
:password => "pass",
:database => "dbname"
})
class LegacyTable“sqlserver”,
:host=>“host”,
:username=>“user”,
:password=>“pass”,
:database=>“dbname”
})
这解决了我的问题。希望它能帮助将来的人 我是否需要activerecord sqlserver适配器来实现此功能,或者它是否与香草activerecord类似?
class LegacyTable < ActiveRecord::Base
establish_connection({
:adapter => "sqlserver",
:host => "host",
:username => "user",
:password => "pass",
:database => "dbname"
})