1

Из документации, которую я прочитал, что:Странная проблема с установкой пользовательских foreign_key

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) 

Я хочу, чтобы вставить myhash на choco_id поле на создание нового вида.

В чем проблема?

ответ

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 модели будет хранить myhash значение Чоко.

+0

тогда я должен удалить эту часть 'foreign_key:: myhash' из' Choco'? –

+0

Да, я только что обновил свой ответ. – Thanh

+0

Нет, он все еще вставил 'id' в эту колонку –