belongs_to 关联 returns 无,而 has_many 工作正常

belongs_to association returns nil while the has_many works fine

我在遗留数据库(SQL 服务器)上使用 rails。我也在使用 gem composite_primary_keys...我目前正在使用两个模型并且 home_games 关联工作正常,但 home_team 关联没有。

class Game < MyDatabaseModel
  self.table_name = 'Game'
  self.primary_key = 'GameID', 'League'

  belongs_to :home_team, class_name: 'Club', foreign_key: 'ClubKey', primary_key: 'Home_Team'
end

class Club < MyDatabaseModel
  self.table_name = 'Club'
  self.primary_key = 'ClubID', 'Season', 'League'

  has_many :home_games, class_name: 'Game', foreign_key: 'Home_Team', primary_key: 'ClubKey'
end

现在,当我执行 myClub.home_games 时,我得到了记录的 ActiveRecordRelation 的预期结果。但是,当我执行 myGame.home_team 时,我得到一个 nil 对象。如果我执行以下调用 Club.where(ClubKey: game.Home_Team),我会从 Club 获得一条记录的预期结果。我的关联设置不正确吗?

尝试在 belongs_to 通话中切换 :foreign_key:primary_keybelongs_tohas_many 调用应该相同,因为它们引用 "child" 上的哪个外键 table 引用 [=19= 上的哪个主键] table 在关系中。在你的情况下:

belongs_to :home_team, class_name: 'Club', foreign_key: 'Home_Team', primary_key: 'ClubKey'