ТЛ; др
Я хотел бы использовать url_id для обоих столбцов объединяемой таблицы. Rails настаивает на использовании первичного ключа из таблицы документов.
У меня есть собственная ссылка Document класс с атрибутом url_id . Документ может ссылаться на другие документы. Я хотел бы соединить таблицу с url_id в качестве значения подключения следующим образом:
Но я не могу убедить рельсы использовать url_id в качестве referring_id ключ.
С такой схемой я мог бы использовать что-то вроде следующего фрагмента SQL для получения связанных документов.
SELECT "documents".* FROM "documents"
INNER JOIN "document_relationships"
ON "documents"."url_id" = "document_relationships"."referenced_id"
WHERE "document_relationships"."referring_id" = ?
Самое близкое, что я мог получить после прохождения Документация ActiveRecord это:
* 1 042 * Nb. Rails использует
document_id вместо
url_id для
referring_id столбца.
Классы документов:
class Document < ApplicationRecord
has_many :document_relationships, foreign_key: :referring_id
has_many :related, through: :document_relationships, source: :referenced
end
class DocumentRelationship < ApplicationRecord
belongs_to :referring, class_name: "Document"
belongs_to :referenced, class_name: "Document", primary_key: :url_id
end