2012-10-07 4 views
0

'팁'모델과 '팀'모델이 있습니다. 사용자가 여러 게임에서 우승 한 팀을 선택하는 양식을 만들려고합니다. 지금까지 사용자는 우승하는 팀을 선택할 수 있으며이 ID는 Tip 모델 (team_id)의 foriegn 키로 저장됩니다. 그러나 저장 후, 나는 (예를 들면) @ tip.team.name으로 갈 수 없다. 내가 무엇을해야 하나 ? 나는 그것을 어떻게 연관시킬 것인가? (비록 포위 키가 설정되어 있다면 마술처럼 마술을 할 수도 있지만) 나는 레일에 아주 새롭다. 어떤 도움을 주셔서 감사합니다!레일스에서 ​​기존 모델을 새 모델과 연결하는 방법

class Tip < ActiveRecord::Base 
attr_accessible :user_id, :team_id, :team, :game_id, :game, :comp, :comp_id 
belongs_to :game 
belongs_to :comp 
belongs_to :team 
end 

class Team < ActiveRecord::Base 
attr_accessible :name 
has_many :tips 
end 

def create 
params['game'][0].each do |key, value| 
    @tip = Tip.new 
    @tip.team_id = value 
    @tip.game_id = key 
    @tip.save 
end 

이 마지막 방법은 지저분 할 수도 있지만 그 밖의 방법은 확실하지 않습니다. 하나의 양식으로 만들고 싶은 몇 가지 '팁'이 있습니다.

편집 : 분명히하기 위해 일대일 관계의 여러 팁이 있지만, 각 팁은 하나의 팀과 관련이 있습니다.

편집 : 나는 확신 사실 내 접근 방식 (가장 좋은 방법은 가까이하지, tip.team.name을 허용했다 그것은 나를 달리 생각하게 내 테스트 데이터에 관한 바보 같은 오류이었다

답변

1

를 참조 설치하는 방법에 대한 자세한 정보를 들어

옳은.

팀 생성시 여러 팁을 만들거나 이미 생성 된 팀에 대한 팁을 추가/편집/삭제하려면 "accepts_nested_attributes_for"및 https://github.com/ryanb/nested_form을보십시오.

u는 '@의 team.name'를 사용하여 팀 이름을 얻을 수 있다면 유는

+0

건배, 내가 필요한 것 같아요. . – Aaron8383

2
..

정말로 필요한 것은 팁과 팀을 연결하기 위해 관계를 통해 has_many를 사용하는 것입니다. 하나의 팁에는 많은 팀이있을 수 있지만 하나의 팀에는 많은 팁이있을 수 있습니다. 세 번째 테이블을 만들어야합니다 .이, 어쩌면 이름 TeamsTips 여기 당신이 그것을 설정하는 방법입니다 :

class Tip < ActiveRecord::Base 
    has_many :teams_tip 
    has_many :teams, :through => :teams_tip 
end 

class TeamsTip < ActiveRecord::Base 
    belongs_to: teams 
    belongs_to: tips 
end 

class Team < ActiveRecord::Base 
    has_many :teams_tip 
    has_many :tips, :through => :teams_tip 
end 
이제

당신이 @tip이있을 때, 당신은 @ tip.teams와 그것을 위해 모든 팀을 찾을 수 있습니다 기억하십시오. 이것은 첫 번째 팀에게 @ tip.teams [0]을 사용하게하는 배열이 될 것입니다. 마찬가지로 @team이 있다면 @ team.tips를 사용하여 팁을 얻을 수 있습니다. 다음 U 질문에 정의 된 협회는 "팀이 많은 팁을 가질 수있다"UR asscociation은 "팁 팀에 속한다"과 경우 협회를 통해이 has_many이 A Guide to Active Record Associations

+1

미안 아마, 그것은 급하게 질문이 명확하지이었다 "@의 tip.team.name"을 사용하여 얻어야한다 .. 한 팁은 한 팀과 관련이 있지만 한 팀은 많은 팁과 관련이 있습니다. 나는 하나의 폼에 많은 팁을 만들고 싶기 때문에, create 메소드에서 루프를 처리해야한다고 생각한다. 내가 원하는 올바른 team_id를 사용하여 새 팁을 만들고 있습니다. 팁이 만들어지면 tip.team.name ....에 가고 싶습니다.이게 작동하지 않는 것 같습니다. – Aaron8383

관련 문제