好的我开始用has_many编写这个想要的帮助:通过跨多个数据库仍然可以,但我发现了一些奇怪的东西,也许我错过了一些东西。
所以我在做什么:
我有
Rails 3.2
1个名为deployments的MSSQL DB表
1 POSTGRESQL数据库表称为报告
使用POSTGRESQL数据库表来加入被叫关联
class Deployment < ActiveRecord::Base
self.primary_key = :id
establish_connection "deploy"
self.abstract_class = true
self.table_name = 'deployments'
has_many :associations
has_many :reports, through: :associations
end
class Report < ActiveRecord::Base
self.primary_key = :id
belongs_to :user
has_many :comments, dependent: :destroy
has_many :associations
has_many :deployments, through: :associations
accepts_nested_attributes_for :comments, allow_destroy: true
validates :weekending, presence: true, uniqueness: true
end
class Association < ActiveRecord::Base
attr_accessible :deployment_id, :report_id
belongs_to :deployment
belongs_to :report
end
关联的创建工作正常我在表中填充了两个ID,但是当我尝试获取数据时,我得到以下内容:
report = Report.find(16)
report.deployments
!! #<ActiveRecord::StatementInvalid: TinyTds::Error: Invalid object name 'associations'.: EXEC sp_executesql N'SELECT [deployments].* FROM [deployments] INNER JOIN [associations] ON [deployments].[id] = [associations].[deployment_id] WHERE [associations].[report_id] = 16'>
但是,如果我以另一种方式做到这一点,这就是我觉得奇怪的事情:
deployment = Deployment.find('0004d1bf-c49f-4310-85cd-222806d2eb78')
deployment.reports
[#<Report id: 15, weekending: "2019-01-17", visible: true, user_id: 5, news: "asdf", created_at: "2014-05-14 02:15:05", updated_at: "2014-05-14 02:15:05">]
这是我所期望的,所以任何人都告诉我为什么它不起作用?
答案 0 :(得分:0)
因为我在你的代码中看到的是一个amny amny错误报告.deployment 它应该是
repost.deployments
所以在模型中
has_many deployments