我有一个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”数据库中的表。
问题:
这是正确的方法吗?我如何从控制器访问它们?
在我的控制器中我尝试了这个:
class NewDBController < ApplicationController
def index
@projects=PROJECT.all
end
end
但我收到以下错误“Mysql2 :: Error:Table'newdb.projects'不存在:显示来自projects
的完整字段”
答案 0 :(得分:2)
您是否为其他环境运行了迁移?
rake db:migrate RAILS_ENV=mysql2_development
您的Project类也应该调用Project
。
您可以使用:
class Project < NewDB
set_table_name "PROJECT"
end