В модульном тесте направляющих, как я могу заставить Пользовательское приспособление загружать свой связанный Профиль?

В документации относительно Приспособлений (http://api.rubyonrails.org/classes/Fixtures.html) они обеспечивают следующий пример использования ссылок маркировки для ассоциаций:

### in pirates.yml
reginald:
  name: Reginald the Pirate
  monkey: george

### in monkeys.yml
george:
  name: George the Monkey
  pirate: reginald

Так следуя их примеру, у меня есть модель User что has_one: профиль, модель Profile, что belongs_to: пользователь, и попробованный для установки приспособлений на их пример:

### in users.yml
reginald:
  id: 1
  login: reginald

### in profiles.yml
reginalds_profile:
  id: 1
  name: Reginald the Pirate
  user: reginald

(Примечание: так как моя ассоциация является односторонней, Пользовательское приспособление не имеет "профиля: reginalds_profile" ассоциация - помещение его в причинах ошибка, потому что таблица SQL не имеет никакого атрибута profile_id.)

Проблема в моих модульных тестах, которые все, кажется, загружает правильно, но пользователи (: reginald), .profile всегда является нолем. Что я пропускаю?

9
задан MikeJ 25 March 2010 в 19:42
поделиться

2 ответа

Основываясь на предложении Тадмана, я провел еще несколько поисков и нашел ответ в другом месте на этом сайте, так что я могу его опубликовать.

См. Сообщение под названием Автоматические ассоциации в приспособлениях ruby ​​on rails

По-видимому, способ, которым Rails находит связанные приспособления, когда вы используете метки (user: reginald) вместо идентификаторов (user_id: 1), заключается в хешировании имени и предположении хеш - это идентификатор. Если вы установите идентификатор на что-то конкретное, это не удастся. Но если вы позволите Rails автоматически назначать идентификаторы, он будет использовать эту схему хеширования. Таким образом, в документации для меток ассоциации приборов отсутствует ключевой лакомый кусочек - если вы используете ярлыки, вы должны избегать применения ваших собственных идентификаторов в приборах, которые необходимо сопоставить. Светильники, не соответствующие меткам, могут иметь любую выбранную вами схему идентификации.

20
ответ дан 4 December 2019 в 09:12
поделиться

Возможно, вам придется объявить, что вы загружаете все эти фикстуры, поскольку я не верю, что загрузчик фикстур автоматически следует таким ассоциациям. В некоторых случаях вам, возможно, придется сделать больше, чем просто:

fixtures :all

Фактическое объявление каждого из них:

fixtures :users, :profiles
3
ответ дан 4 December 2019 в 09:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: