2014-01-27 1 views
0

나는 인터넷을 들여다 보았습니다. 그러나 어떤 이유로 그 답변들은 가까이 있지만 그들은 나를 도와주지 않습니다.명명 된 연관성을 찾지 못했습니다. Rails

그래서 나는 선수 테이블과 팀 테이블을 가지고 있습니다. 플레이어는 여러 팀에 속할 수 있습니다. 팀은 많은 선수를 보유 할 수 있습니다. Liveplayer :

class LivePlayer < ActiveRecord::Base 
has_many :teamplayers 
has_many :fteams, :through => :teamplayers 
end 

Fteam :

class Fteam < ActiveRecord::Base 
belongs_to :liveplayer 
end 

Teamplayer :

그래서 여기 내 모델입니다

class Teamplayer < ActiveRecord::Base 
belongs_to :live_player 
belongs_to :fteam 
end 
테이블의 5,

이름은 각각 live_players하고 여기에

는 HTML입니다 fteams : 여기
<select id = "test4" style= float:left> 
<% Teamplayer.includes(:live_player).all do |tp| %> 
    <option> <%=tp.id %></option> <- This returns nothing right now 
<% end %> 
</select> 

오류입니다 : 협회라는 'LivePlayer'Teamplayer 찾을 수 없습니다; 아마 철자가 틀린거야?

제 질문은 이것이 문제입니다.

  1. 모델의 관계는 무엇입니까?
  2. 관계에 모델 이름 대신 테이블 이름이 있어야합니까? 예 : liveplayer 대신 live_players?
  3. 또는 내가 원하는 값에서 HTML을 사용하고있는 방법입니까? 결국

내가 팀에 즉 모든 플레이어, 특정 팀에 플레이어의 목록을 얻으려면 1

나는 또한의 id의에 의해 서로에 두 테이블을 연결 할 또 다른 테이블이

세 번째 테이블에 저장 될 각 테이블. 하지만 먼저 오류의 의미를 알아 내야합니다.

UPDATE는는 나는 협회 오류가 더 이상, 아무것도하지만 디스플레이는 HTML의 선택 상자에 내 모델 보통 위 및 HTML

+1

'Teamplayer' 클래스의 코드는 무엇입니까? – mihai

+0

'클래스 Teamplayer <액티브 :: 자료 \t가 belongs_to : live_players – user3240928

+0

는 또한이 라인은 콘솔에서 실행되지 않습니다 end' : \t belongs_to을 fteam'Teamplayer.includes (: live_player) .all' 그것은 협회 오류를 제공합니다 : Teamplayer에서 association live_player를 찾을 수 없습니다. 모델 업데이트를 참조하십시오 – user3240928

답변

0
<% Teamplayer.includes(:live_players).all do |tp| %> 
    <option> <%=tp.teamid %></option> 
<% end %> 
+0

확인 일부 진행, 지금이 얻을 : 초기화되지 않은 상수 Teamplayer :: LivePlayers – user3240928

+0

잘! 어느 선 에서요? – itsnikolay

+0

이 줄 : <% Teamplayer.includes (: live_players) .all do | tp | %> – user3240928

0

belongs_to 위를 업데이트되지 않습니다 특히 귀하의 모델이 단수이기 때문에 단수입니다. 클래스가 낙타 - 케이스 인 경우 대시를 사용하십시오.

belongs_to :live_player 

또한 TeamPlayer는 조인 테이블이고 다른 클래스는이 테이블과 연관되어 있어야합니다. 예 :

class LivePlayer < ActiveRecord::Base 
    has_many :team_players 
    has_many :fteams, :through => :team_players 
end 

fteam에 team_player_id가 있습니까? 그렇다면, 그게 속한 것입니다 - 아마도 선장이나 팀 창작자입니까?그렇다면,이 같은해야합니다 : 양식에서

class Fteam < ActiveRecord::Base 
    belongs_to :live_player 
    has_many :team_players 
    has_many :live_players, :through => :team_players 
end 

, 팀 ID를 얻기를, 당신은 fteam 대신 team_player로 사용할 수도 있습니다 - 그것은 중복이 없습니다.

<% Fteam.all do |t| %> 
    <option> <%= t.id %></option> 
<% end %> 
+0

이 표시되므로 belongs_to : live_player가 Teamplayer에 있어야합니다. 그리고 yes teamplayer는 playerid와 teamid 두 개의 필드가있는 조인 테이블입니다. Fteam에 팀 플레이어 ID가 없습니다. 양식의 경우 목록에 팀을로드하려면 fteam id를 사용하면됩니다. – user3240928

+0

'<% Fteam.all do | t | %> <% end %> '반환 값 없음 – user3240928

+0

예 - TeamPlayer에 belongs_to : live_player가 있어야합니다. 이 모든 것을 콘솔에서 테스트 할 수 있습니다. 'rails c'를 실행하고 Fteam.all을 실행하여 db에 무엇이 있는지 확인하십시오. 그리고 Rails 버전은 무엇입니까? – Swards

관련 문제