ruby-on-rails – 使用has_many的多个数据库连接
发布时间:2020-12-17 04:14:08 所属栏目:百科 来源:网络整理
导读:如何通过多个数据库连接来创建has_many? 我有一个名为“master”的数据库,用于保存位置信息.这是从单独的应用程序更新.用户可以访问许多位置,但所有其他模型都位于另一个名为“预算”的数据库中.以下是模型的设置方法. # place.rbclass Place ActiveRecord:
如何通过多个数据库连接来创建has_many?
我有一个名为“master”的数据库,用于保存位置信息.这是从单独的应用程序更新.用户可以访问许多位置,但所有其他模型都位于另一个名为“预算”的数据库中.以下是模型的设置方法. # place.rb class Place < ActiveRecord::Base belongs_to :user belongs_to :location end # user.rb class User < ActiveRecord::Base has_many :locations,:through => :places has_many :places end # location.rb class Location < ActiveRecord::Base establish_connection "master" has_many :places has_many :users,:through => :places end 当我通过irb运行命令时,我得到以下内容 > Location.first.places.create(:user_id => 1) > #<Place id: 1,user_id: 1,location_id: 1,created_at: "2011-11-28 20:58:43",updated_at: "2011-11-28 20:58:43"> > Location.first.places > [#<Place id: 1,updated_at: "2011-11-28 20:58:43">] > Location.first.users > [#<User id: 1,username: "toby",role: "guest",created_at: "2011-11-28 17:45:40",updated_at: "2011-11-28 17:45:40"> > User.first.locations > Mysql2::Error: Table 'master.places' doesn't exist: SELECT `locations`.* FROM `locations` INNER JOIN `places` ON `locations`.`id` = `places`.`location_id` WHERE `places`.`user_id` = 1 ActiveRecord::StatementInvalid: Mysql2::Error: Table 'master.places' doesn't exist: SELECT `locations`.* FROM `locations` INNER JOIN `places` ON `locations`.`id` = `places`.`location_id` WHERE `places`.`user_id` = 1 我尝试将当前rails env添加到Place以尝试覆盖场所的默认数据库,如下所示: #database.yml master: adapter: mysql2 encoding: utf8 reconnect: false database: master pool: 5 username: root password: socket: /var/run/mysqld/mysqld.sock development: adapter: mysql2 encoding: utf8 reconnect: false database: budget_development pool: 5 username: root password: socket: /var/run/mysqld/mysqld.sock 这没有用.有任何想法吗? 解决方法
一位朋友为我回答了这个问题,我认为这可能对其他人有用.
class Location < ActiveRecord::Base #establish_connection "master" def self.table_name() "master.locations" end has_many :places has_many :users,:through => :places end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |