设置自定义foreign_key的奇怪问题

时间:2016-12-11 14:56:50

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

从我阅读的文档中可以看出:

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并且我无法理解为什么。

模式

对于Choco:

— (id, title, myhash)

善良:

— (id, choco_id, title)

我想在创建新类型时在choco_id字段上粘贴myhash。

有什么问题?

1 个答案:

答案 0 :(得分: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

choco_id模型中的Kind列会存储choco的myhash值。