2009-02-04 3 views
25

나는이 guide (감사합니다, trevorturk)에서 레일 비품에 대해 읽고 있습니다. Yaml 파일에 클래스를 정의한 것으로 보이며 자동으로 test DB에로드됩니다.레일 고정물 - 어떻게 외래 키를 설정합니까?

그러나이 요리법이 그 요리 책 (또는 무엇이든)에 속한다고 지정하려면 어떻게해야합니까?

Yaml 코드에서 cookbook.idrecipe.cookbook_id의 값을 직접 지정해야합니까? (단지 추측 - 가이드는 그런 것을 보여주지 않습니다.) 아니면 더 적합한 방법이 있습니까?

답변

53

당신이 제공하지 않는 곳에 자동으로 ID 번호를 생성하는 명명 된 조명기를 사용해야합니다. 이 id 수는 본질적으로 사용하는 문자열의 정수 해시입니다. 또한

# recipes.yml 
chicken_soup: 
    cookbook: my_recipes 

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

실제로 제대로 작동합니다. 고마워. – Ethan

+0

와우, 그게 내가 생각했던 것보다 훨씬 간단 해. 나는'client_id : <% = contacts (: dave) .id %>'와 같은 어리석은 것들을 시도했다. – Skilldrick

+3

ID가 개체와 다른 이름 (예 : my_cookbook_id) 인 경우 개체 클래스를 다음과 같이 지정할 수 있습니다.'my_cookbook : my_recipes (Cookbook)' –

1

당신이 많은 협회 (HABTM) 그냥 고정의 연관에 대해 배열을 제공에 많은를 원하는 경우 : 명명 된 버전을 참조하는 경우 "_id"를 추가하지 마십시오 :

# recipes.yml 
chicken_soup: 
    cookbooks: [my_recipes, another_recipe] 
관련 문제