2013-02-05 1 views
0

저는 레일을 처음 사용하고 있으며 매우 기본적인 질문이 있습니다.레일에 연관성을 위해 테이블을 만들어야합니까?

예를 들어 모델을 만들 때. 레시피와 그 단계를 저장해야합니다. 이제 레서피 테이블, 스텝 테이블 및 recipe_steps 테이블을 만들거나 레서피, 스텝 테이블이 있어야하며 레서피 정의 has_many : steps에 대한 모델에 있어야합니까?

도움이 될 것입니다.

고마워요

답변

0

데이터베이스에는 항상 3 개의 테이블이 있어야합니다. 당신이 말한대로 recipesstepsrecipe_steps

그런 다음 두 가지 솔루션을 사용할 수 있습니다. 3 개 모델 첫 번째 : 두 모델

class Recipe 
    has_many :recipe_steps 
    has_many :steps, through: :recipe_steps 
end 

class Step 
    has_many :recipe_steps 
    has_many :recipes, through: :recipe_steps 
end 

class RecipeStep 
    belongs_to :step 
    belongs_to :recipe 
end 

두 번째 : 당신이 recipe_steps 테이블의 데이터를 관리하지 않는 경우

class Recipe 
    has_and_belongs_to_many :steps 
end 

class Step 
    has_and_belongs_to_many :recipes 
end 

당신은 두 번째 솔루션을 사용합니다. 그러나이 표에 정보 (예 : 가격 또는 수량)를 추가하려면 첫 번째 솔루션을 사용해야합니다.

모든 경우에 3 개의 테이블을 만들어야합니다.

더 많은 정보는 이곳에서 찾을 수 있습니다 :이 도움

+0

감사 큐 프라에게 희망 http://guides.rubyonrails.org/association_basics.html

을 : 그것은 도움이되었다. 나는 내가 분명히 할 필요가 있다고 생각하지만, 각 조리법에는 기본적으로 일대 다 관계의 여러 단계가있다. 이 경우에도 3 개의 테이블이 필요합니까? – abhilash

+0

일대 다 관계의 경우 3 개의 테이블이 필요하지 않습니다. 하나의 릴레이션을 가진 모델에 대해'belongs_to'와 다른 모델에 대해'has_many'를 가진 두 개의 테이블을 갖게 될 것입니다. 여기에서 자세한 정보를 얻을 수 있습니다 : http://guides.rubyonrails.org/association_basics.html –

+0

넵 감사합니다. Cupra. 도움을 감사하십시오. 나는 당신이 제안한 것과 똑같이하고 있으며, 내가하고있는 일을 확신하고 싶다. 다시 한번 감사드립니다. – abhilash