Рельсовые светильники - как вы устанавливаете внешние ключи? - PullRequest
26 голосов
/ 04 февраля 2009

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

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

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

Ответы [ 2 ]

57 голосов
/ 04 февраля 2009

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

# recipes.yml
chicken_soup:
  cookbook: my_recipes

# cookbooks.yml
my_recipes:
  title: My Test Cookbook
3 голосов
/ 14 декабря 2016

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

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