Rails 5 has_many с внешним ключом jsonb - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть модель с has_many, и я пытаюсь использовать столбец jsonb в качестве внешнего ключа. Я использую postgres в качестве базы данных.

has_many :accounts, foreign_key: "item->>'Id'", primary_key: "item->>'AccountId'"

SQL выглядит следующим образом (обратите внимание на цитаты вокруг полей соединения, где оно "accounts"."item->'Id'"

SELECT "opportunities".* FROM "opportunities" INNER JOIN "accounts" ON "accounts"."item->>'Id'" = "opportunities"."item->>'AccountId'" WHERE "opportunities"."item->>'AccountId'" IS NULL

Я пробовал нижеприведенное, который работает, но первичные ключи фактически игнорируются (вероятно, из-за вызова unscope).

  has_many :accounts, ->{
    joins("inner join opportunities on opportunities.item->>'AccountId' = accounts.item->>'Id'").unscope(:where)
  }, foreign_key: "item->>'Id'", primary_key: "item->>'AccountId'"

Без вызова unscope, следующий оператор выбора произведено:

SELECT "accounts".* FROM "accounts" inner join opportunities on opportunities.item->>'AccountId' = accounts.item->>'Id' WHERE "accounts"."item->>'Id'" IS NULLs

Помимо дублирования данных ассоциации в столбец, есть идеи, как заставить это работать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...