我有一个rails应用程序,它使用两种不同类型的数据库:sqlite3和mysql2。
我做了一些搜索并设法做到了这一点,我的database.yml 文件如下所示:
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
mysql2_development:
adapter: mysql2
database: db_name
username: user_name
password: pass_word
host: somehost.net
port: 3306
socket: /tmp/mysql.sock
我在模型中创建了以下类来访问我的 Mysql2 数据库:
class NewDB < ActiveRecord::Base
# To change this template use File | Settings | File Templates.
self.abstract_class = true
establish_connection "mysql2_#{Rails.env}"
end
class PROJECT < NewDB
end
这里的 PROJECT 是“NewDB”数据库中存在的表。
问题:
这是正确的方法吗?我如何从 Controller 访问它们?
在我的 Controller 中我尝试了这个:
class NewDBController < ApplicationController
def index
@projects=PROJECT.all
end
end
但我收到以下错误“Mysql2::Error: 表 'newdb.projects' 不存在:显示 projects
中的完整字段”
最佳答案
您是否为其他环境运行了迁移?
rake db:migrate RAILS_ENV=mysql2_development
此外,您的 Project 类应该称为 Project
。
您可以使用:
class Project < NewDB
set_table_name "PROJECT"
end
关于ruby-on-rails - Rails 中的 Mysql2 和 Sqlite3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16012689/