【问题标题】:Rails foreign_key not idRails foreign_key 不是 id
【发布时间】:2018-08-28 11:08:27
【问题描述】:

我有两张桌子

class Sku < ApplicationRecord
  validates :sku, :supplier_code, :name, :price, presence: true
  belongs_to :supplier, class_name: 'Supplier', foreign_key: 'code'
end

 class Supplier < ApplicationRecord
  validates :code, :name, presence: true
  has_many :skies, class_name: 'Sku'
end

我将foreign_key 设置为code 字段

但是当我尝试用我设置为供应商的supplier_code 创建sku

Supplier.create(code:4,name:2) => OK

我有一个错误{:supplier=&gt;[{:error=&gt;:blank}]},

Sku.create(name:2,price:2,sku:3,supplier_code:4).errors

【问题讨论】:

  • 试试belongs_to :supplier, primary_key: 'code', foreign_key: 'supplier_code'

标签: ruby-on-rails ruby associations


【解决方案1】:

您必须需要在另一个模型上定义

class Sku < ApplicationRecord
  validates :sku, :supplier_code, :name, :price, presence: true
  belongs_to :supplier, class_name: 'Supplier', foreign_key: 'code'
end

class Supplier < ApplicationRecord
  validates :code, :name, presence: true
  has_many :skies, class_name: 'Sku', primary_key: 'id', foreign_key: 'code'
end

【讨论】:

  • 为什么当我想构建 Supplier.last.skies.new 时将供应商代码设置为供应商 id 而不是供应商代码?
  • class_name: 'Supplier'belongs_to 关联中是多余的。
  • 我们是否需要在has_many :skies 中指定primary_key: 'id'?这不是它的默认值吗?
猜你喜欢
  • 1970-01-01
  • 2017-01-23
  • 1970-01-01
  • 1970-01-01
  • 2017-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多