Добавить собственную связь один-ко-многим, используя другие поля, кроме 'id'
У меня есть модель Product
Я хочу реализовать самоассоциацию на этих двух полях channel_advisor_product_id
, parent_product_id
, Но когда я звоню Product.last.child_products
это занимает id
вместо parent_product_id
belongs_to :parent_product, class_name: 'Product', primary_key: "channel_advisor_product_id"
has_many :child_products, class_name: 'Product', foreign_key: "parent_product_id"
2 ответа
В основном проблема решается путем добавления primary_key
а также foreign_key
на обеих ассоциациях parent
а также children
, Теперь идентификатор исключен и self association
работает нормально для моих предоставленных столбцов.
own_to: parent, name_name: 'Product', primary_key: "channel_advisor_product_id", foreign_key: "parent_product_id"
has_many: children, class_name: 'Product', foreign_key: "parent_product_id", primary_key: "channel_advisor_product_id"
Вы используете консоль рельсов?
Если "yes", введите exit и "rails c" снова, то в консоли:
Product.last.child_products
и вы увидите, использует ли запрос "id" или "parent_product_id".