【问题标题】:Strange issue with setting custom foreign_key设置自定义foreign_key的奇怪问题
【发布时间】:2016-12-11 14:56:50
【问题描述】:

从我读到的文档中:

class Book < ApplicationRecord
  belongs_to :author, class_name: "Patron", foreign_key: "patron_id"
end

所以据此我正在尝试下一个:

class Choco < ActiveRecord::Base
  has_many :kinds, inverse_of: :choco, foreign_key: :myhash

class Kind < ActiveRecord::Base
  belongs_to :choco, foreign_key: :myhash

但它却粘贴在那一列 NULL 中,我不明白为什么。

架构

对于巧克力:

— (id, title, myhash)

对于种类:

— (id, choco_id, title)

我想在创建新种类时将 myhash 粘贴到 choco_id 字段。

有什么问题?

【问题讨论】:

    标签: ruby-on-rails ruby database foreign-keys foreign-key-relationship


    【解决方案1】:

    您可以指定主键存储在Kind 模型上:

    class Choco < ActiveRecord::Base
      self.primary_key = 'myhash'
      has_many :kinds, inverse_of: :choco, primary_key: :myhash
    
    
    class Kind < ActiveRecord::Base
      belongs_to :choco, primary_key: :myhash
    

    所以Kind模型中的choco_id列将存储choco的myhash值。

    【讨论】:

    • 那么我应该从Choco 中删除这部分foreign_key: :myhash
    • @J.Doe 在您的Choco 模型中添加self.primary_key = 'myhash'
    • 不。同样的事情=/我昨天也试过这个,但还是没有运气
    • @J.Doe 好的,如果你在Kind 模型中使用belongs_to :choco, primary_key: 'myhash' 并在Choco 模型中删除primary_key: :myhash 怎么样?
    • 再次 - 不 =/ 相同的事情。它会粘贴 Choco 的 ID,而不是 myhash
    猜你喜欢
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多