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_key
。 belongs_to
和 has_many
调用应该相同,因为它们引用 "child" 上的哪个外键 table 引用 [=19= 上的哪个主键] table 在关系中。在你的情况下:
belongs_to :home_team, class_name: 'Club', foreign_key: 'Home_Team', primary_key: 'ClubKey'
我在遗留数据库(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_key
。 belongs_to
和 has_many
调用应该相同,因为它们引用 "child" 上的哪个外键 table 引用 [=19= 上的哪个主键] table 在关系中。在你的情况下:
belongs_to :home_team, class_name: 'Club', foreign_key: 'Home_Team', primary_key: 'ClubKey'