Приспособление Rails 5 помечено как ссылка для has_one не работает - PullRequest
0 голосов
/ 17 декабря 2018

Урок и доступность - это ActiveRecords с ассоциацией has_one.Я убедился, что их таблицы базы данных имеют _id друг друга в виде столбца.В консоли я могу получить доступ к Availability.first.lesson и Lesson.first.availability без проблем.Однако, когда я пишу следующие приборы, я получаю ActiveRecord::Fixture::FixtureError: table "lessons" has no column named "availability".Функция помеченных ссылок в приборах отлично работает с belongs_to, и я ожидаю, что она будет работать с has_one таким же образом.Как я могу заставить его работать?

#availabilities.yml
availability1:
  lesson: lesson1

#lessons.yml
lesson1:
  availability: availability1

Ответы [ 2 ]

0 голосов
/ 30 августа 2019

Чтобы добавить к ответу @ allenylzhou, причина, по которой он работает только для ассоциаций belongs_to, заключается в том, что ссылки на метки для ассоциаций зависят от внешнего ключа, а внешний ключ всегда находится в классе с ассоциацией belongs_to.

С https://api.rubyonrails.org/v5.2.2/classes/ActiveRecord/FixtureSet.html

Задание внешних ключей в приборах может быть очень хрупким, не говоря уже о том, что его трудно прочитать.Поскольку Active Record может определять идентификатор любого прибора по его метке, вы можете указать FK по метке вместо ID.

Из док-станции API :

Ассоциация #belongs_to всегда используется в модели с внешним ключом.

0 голосов
/ 18 декабря 2018

Несмотря на то, что ActiveRecord позволяет получить доступ к Availability.first.lesson при настройке ассоциации has_one для модели доступности, при переносе базы данных, которая создает резервную копию этой ассоциации, не ожидается, что у доступности будут столбцы, связанные с уроком.

Начиная с https://guides.rubyonrails.org/association_basics.html#the-has-one-association: enter image description here

Функция помеченных ссылок в приборах , следовательно, работает только для моделей с ассоциациейочной принадлежностью, а не с has_one или has_many.

Это не ответ, и я был бы признателен за более подробное объяснение от экспертов по рельсам.

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