2012-03-23 9 views
0

작은 프로젝트로 어려움을 겪고있는 초보자 용 레일입니다. 나는 운동으로 좋아하는 보드 게임을위한 간단한 배 건물 도구를 만들고 있는데, 나는 조금 길다.모델 간의 관계 설정에 도움이 필요합니다.

무엇을하고 싶습니까? - Ship 모델 레코드를 만든 후 Ship 모델과 관련된 Traits 모델 레코드를 만들고 싶습니다. Ship 모델 레코드를 업데이트 한 후 Ship 모델 레코드와 관련된 Traits 모델을 업데이트하거나 생성하려고합니다.

무엇을 시도 했습니까? - 각 선박 모델 레코드에 특성을 열 변수로 추가. 나는 이것이 각 선박 모델에 대한 특성을 저장하는 가장 효과적인 방법이라고 생각하지 않습니다. Traits 모델을 설정했지만 탐색 방법 및 배 모델과 연결하는 방법을 모르겠습니다.

완료되면 어떤 점이 좋을까요? - 해당 값으로 각 배의 속성을 표시하는 각 선박 모델 레코드에 저장된 배열

즉 만약

trait_list = trait1 => T1, trait2 => T2, trait3 = > t3, trait4 => t4]

ship_traits = [t1, t4].

결국 나는 현재의 모델과 관련된 모든 단일 특성을 반복하지 않고도 배 다이어그램 페이지에서 특성을 호출 할 수 있습니다.

모델 간의 연관성을 어떻게 설정해야하는지에 대해서는 분실했습니다. 내가 조사해야 할 지시에 대한 도움이나 친절한 충고는 열렬히 환영받을 것입니다. 나는 애매 모호함에 대해 미리 사과하며, 나는 완전한 초보자입니다.

건배, 닉

답변

1

내가있어이 문제를 해결할 수 있지만 이런 식으로 뭔가 할 수있는 100 % 확인 :

class Ship < ActiveRecord::Base 
    has_many :traits 
    accepts_nested_attributes_for :traits 
end 

class Trait < ActiveRecord::Base 
    belongs_to :ship 
end 


# In your form 
- form_for @ship do |f| 
    - f.fields_for :traits do |ff| 
    = ff.label :trait_name 
    = ff.text_field :trait_name 

# this will return all the traits for model defined as @ship 
@ship.traits 

나는 그것이 선박 모델 내에서 배열이 아닌 알고를 ,하지만 모델에있는 열을 배열로 설정하는 것은 다소 까다 롭습니다. 형질이 독특하기를 원한다면 (많은 배에서 많은 형질을 가질 수 있고 이러한 형질이 여러 배에 속할 수 있기 때문에), 당신은 has_many : through 관계를 가질 것입니다. 그럴 경우 알려 주시면 다시 답변 드리겠습니다. 아니면 이것 좀보세요 : http://guides.rubyonrails.org/association_basics.html

+0

Seanpat, 나는 이것이 내가 찾고있는 것에 매우 가깝다고 생각합니다. 대단히 감사합니다. 나는 이것을 시도하고 내 traits 테이블에 ship.id 컬럼이 없다는 오류를 받았다. 그래서 나는 그것을 위해 이주해야만한다고 생각합니다. 귀하의 예에 비추어 협회 기본에 대한 링크가 훨씬 더 의미가 있습니다. 다시 한번 감사드립니다. –

관련 문제