2009-02-04 2 views
25

Я читаю о Rails светильниках в этом guide (спасибо, trevorturk). Кажется, вы определяете классы в файле Yaml, и они автоматически загружаются в базу данных test - круто.Rails fixtures - как вы устанавливаете внешние ключи?

Но если вы хотите указать, что этот рецепт принадлежит этой поваренной книге (или что-то еще), как вы это делаете?

Вы должны указать значения для cookbook.id и recipe.cookbook_id вручную в коде Yaml? (Просто догадка - руководство не показывает ничего подобного). Или есть более подходящий способ?

ответ

53

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

# recipes.yml 
chicken_soup: 
    cookbook: my_recipes 

# cookbooks.yml 
my_recipes: 
    title: My Test Cookbook 
+0

Хорошо, что на самом деле сработало. Спасибо чувак. – Ethan

+0

Ничего себе, это намного проще, чем я думал, что это будет :) Я пытался глупыми вещами вроде 'client_id: <% = контакты (: dave) .id%>' (что явно не работает). – Skilldrick

+3

Если у вас есть идентификатор, который отличается от объекта (например, my_cookbook_id), вы можете указать класс объекта следующим образом: 'my_cookbook: my_recipes (Cookbook)' –

1

Кроме того, если вы хотите иметь многие ко многим ассоциации (HABTM) вы просто дать массив для объединения в приспособлении :

# recipes.yml 
chicken_soup: 
    cookbooks: [my_recipes, another_recipe]