关于在Rails中创建到多个数据库的多个连接,存在许多问题和答案:
https://stackoverflow.com/a/7480330/2120023
https://stackoverflow.com/a/6305540/2120023
来自外部stackoverflow的示例:http : //ilikestuffblog.com/2012/09/21/ Establishment-a-connection-to-a-non-default-database-in-rails-3-2-2 /
但是我还没有找到一种解决方案,该解决方案可以使用两个数据库中都出现的模型。
如果我的默认数据库有一个表titles
,我的Other
数据库有一个表titles
我该如何访问其它数据库的标题模式?
title.rb
:
class Title < ActiveRecord::Base
end
othertitle.rb
:
class Other < ActiveRecord::Base
self.abstract_class = true
establish_connection "other_#{Rails.env}"
end
class OtherTitle < Other
end
我不能使用上面的命令,因为我得到了这个错误(编辑:为了清楚起见,other_titles
在两个db中都没有表,只有一个titles
表->编辑2:如果我确实other_titles
在Other
数据库中创建了一个表,那么一切工作正常,但这无济于事我进入titles
表格。):
ActiveRecord::StatementInvalid: Mysql2::Error: Table 'other.other_titles' doesn't exist: SHOW FULL FIELDS FROM `other_titles`
我也无法使用,class Title < Other
因为出现TypeError: superclass mismatch for class Title
错误。
database.yml
development:
adapter: mysql2
encoding: utf8
database: db_dev
pool: 5
username: xxxx
password: xxxx
socket: /var/lib/mysql/mysql.sock
production:
adapter: mysql2
encoding: utf8
database: db
pool: 5
username: xxxx
password: xxxx
socket: /var/lib/mysql/mysql.sock
other_development:
adapter: mysql2
encoding: utf8
database: other_dev
pool: 5
username: xxxx
password: xxxx
socket: /var/lib/mysql/mysql.sock
other_production:
adapter: mysql2
encoding: utf8
database: other
pool: 5
username: xxxx
password: xxxx
socket: /var/lib/mysql/mysql.sock
我找到了答案,这很简单:
class OtherTitle < Other
self.table_name='titles'
end
这里引用:
和这里:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句