2

我有一个使用两种不同类型数据库的 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' doesn't exist: SHOW FULL FIELDS FROM projects

4

1 回答 1

2

您是否为其他环境运行了迁移?

rake db:migrate RAILS_ENV=mysql2_development

您的 Project 类也应该被调用Project。您可以使用:

class Project < NewDB
  set_table_name "PROJECT"
end
于 2013-04-15T10:21:05.833 回答