【问题标题】:Why is foreign_key ignored?为什么foreign_key被忽略?
【发布时间】:2025-12-02 18:55:02
【问题描述】:

我有 2 个具有 has_onehas_many 关联的模型。

realm.rb

class Realm < ActiveRecord::Base
    has_one :realm_type, foreign_key: "id"
end

realm_type.rb

class RealmType < ActiveRecord::Base
    has_many :realms, foreign_key: "realm_type_id"
end

但是当我在rails console 中执行sql 请求Realm.find(1).realm_type 时,我得到了

Realm Load (0.3ms)  SELECT "realms".* FROM "realms" WHERE "realms"."id" = $1  [["id", 1]]
RealmType Load (0.3ms)  SELECT  "realm_types".* FROM "realm_types" WHERE "realm_types"."id" = $1 LIMIT 1  [["id", 1]]

如您所见,它忽略了 realm_type.rb

has_many 关联的 foreign_key: "realm_type_id"

UPD 1:has_many替换为belongs_to,还是一样的结果

【问题讨论】:

    标签: ruby-on-rails ruby associations models


    【解决方案1】:

    你不应该使用belongs_to吗?

    class RealmType < ActiveRecord::Base
      has_many :realms, foreign_key: "realm_type_id"
    end
    
    class Realm < ActiveRecord::Base
      belongs_to :realm_type
    end
    

    【讨论】: