我有一个Rails 4.2网站应用程序。它具有基于Devise的典型“User”模型,供人们注册、登录和进行操作。
同时,我还有另一个名为“Partner”的模型,它连接到一个名为“Partner_Data”的远程数据库,其中包含一个名为“user”的表格。
在我的rails控制台中,当应该是Partner对象时,我得到了一个User类的对象。你有什么想法吗?
我所做的一个临时解决方案是:
在
同时,我还有另一个名为“Partner”的模型,它连接到一个名为“Partner_Data”的远程数据库,其中包含一个名为“user”的表格。
在我的rails控制台中,当应该是Partner对象时,我得到了一个User类的对象。你有什么想法吗?
> abc_partner = Partner.where(id:200)
=> #<ActiveRecord::Relation [#<User id: 262, email: "abc@abc.xyz", created_at: ...>]>
> abc_partner.class
=> Partner::ActiveRecord_Relation
> abc_partner.first.class
=> User(id: integer, email: string, encrypted_password: string ... )
我所做的一个临时解决方案是:
abc_partner.becomes(Partner)
=> #<Partner id:262 name: 'John Doe', partners_since:'2013-03-19', location:'New York, NY', company:'ABCD Corp.'>
然而:我也有一个名为“Asset
”的模型,它也连接到同一个远程数据库,使用相同名称的表“asset
”,并且我得到了能够工作的东西:
> abc_asset = Asset.where(id:101)
=> #<ActiveRecord::Relation [#<Asset id: 213, name: "arc", description: "My arc", created_at: "2015-03-13", owner_login: "John Doe", ...>]>
> abc_asset.class
=> Asset::ActiveRecord_Relation
> abc_asset.first.class
=> Asset(id: integer, name: string, description: text, created_at: datetime, ...)
我曾试验将Partners_Data
数据库中的'user
'表名更改为各种名称,例如'partner_user
'或'omg_user
',以查看表名是否有所不同,但是没有任何变化。
我注意到abc_partner.class
和abc_asset
返回了不同的内容...,分别是Partner::ActiveRecord_Relation
和Asset::ActiveRecord_Relation
...
类:
class Partner < ActiveRecord::Base
establish_connection(:my_partners_db)
self.table_name = 'user'
belongs_to: :partner_list
end
class Asset < ActiveRecord::Base
establish_connection(:my_partners_db)
self.table_name = 'asset'
end
在
database.yml
文件中:my_partners_db:
adapter: mysql
encoding: utf8
host: 1.1.1.1
database: partner_data
username: some_username
password: some_password
pool: 7
port: 3317