Meridian312
@Meridian312

Как подменить id текущего экзепляра модели для связи has_one?

В документации говориться для has_one

:primary_key
Specify the method that returns the primary key used for the association. By default this is id.

Я так понимаю, когда модель использует данную связь, то в ссылаемой таблице осуществляется поиск по primary_key, который по default является id данной модели и которая в свою очередь имеет связь has_one

class Model_A
  belongs_to model_b
end

class Model_B
  has_one model_a
end


следовательно для атрибута modeL_a экземпляра класса Model_B будет идти поиск как

SELECT "model_a".* 
FROM "model_a" WHERE "model_a"."model_b_id" = $1 
ORDER BY "model_a"."id" ASC LIMIT 1  [["model_b_id", <Сюда попадает ID экземпляра класса Model_B>]]


Возможно ли каким-нибудь способом заменить вставку <> в запросе для модели содержащую связь has_one?
В чём суть primary_key в has_one если только как не переопределение названия primary key поля?
Возможно ли сделать так чтобы последующие связи ссылаемые на Model_B через has_one :through, так же подменивали вставку <> по необходимости?
  • Вопрос задан
  • 2359 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы