Rails:覆盖关联主键

时间:2013-10-19 01:05:59

标签: ruby-on-rails ruby-on-rails-3 activerecord associations

我正在尝试在ServerReport之间建立关系。 Server模型has_many :reports

Server模型具有以下属性

  • ID
  • game_server_id
  • 名称

Report模型具有以下属性

  • ID
  • game_server_id
  • 安装

我面临的问题是如果我执行以下操作

    class Server < ActiveRecord::Base
      has_many :reports 
    end

   Server.first.reports

Rails会尝试根据server_id模型中的Report字段将服务器与其报告进行匹配。为了解决这个问题,我可以轻松地执行以下操作

    class Server < ActiveRecord::Base
      has_many :reports, source: :game_server 
    end

   Server.first.reports

现在,rails会尝试查找服务器的报告,但会将Server.idReport.game_server_id匹配。这不是我想要的!

我需要导轨才能将Report.game_server_idServer.game_server_id匹配。无论如何我可以改变配置来实现这一目标吗?

1 个答案:

答案 0 :(得分:1)

您可以在关联中指定外键。您可以在documentation中查看可用于关联的所有选项。

试试这个:

has_many :reports, foreign_key: :game_server_id