【问题标题】:belongs_to association returns nil while the has_many works finebelongs_to 关联返回 nil 而 has_many 工作正常
【发布时间】:2015-08-01 18:18:04
【问题描述】:

我在旧数据库 (SQL Server) 上使用 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),我会从俱乐部获得一条记录的预期结果。我的关联设置不正确吗?

【问题讨论】:

    标签: ruby-on-rails activerecord associations belongs-to


    【解决方案1】:

    尝试在belongs_to 通话中切换您的:foreign_key:primary_key。对于belongs_tohas_many 调用,这些应该相同,因为它们引用关系中“子”表上的哪个外键引用“父”表上的哪个主键。在你的情况下:

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

    【讨论】:

    • 感谢详细的解释!我不知道它是如何工作的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多