2013-02-18 2 views
0

현재 내 응용 프로그램에서 나는 다음과 같은 모델이 있습니다어떤 many_to_many 모델을 사용하여 데이터베이스 쿼리를 효율적으로 사용해야합니까?

  • 학생을
  • 도장 (아직 다른 모델에 연결되지 않음) : has_many :training_times
  • TrainingTime : belongs_to :dojo

나는 학생을 원한다 많은 훈련 시간을 가질 수 있고, 많은 학생들을 훈련시키는 시간을 가질 수 있습니다. 내 학생 컨트롤러에서 현재

내가 가진 : 훈련 시간이 현재 학생에 연결되어있는 경우

students#show view

그때 내가 강조하고 싶은 :로

def show 
    @student = Student.includes(:senseis).find(params[:id]) 
    @times = TrainingTime.includes(:dojo).order("time ASC") 
    @times = sort_by_place_and_day(@times) 
end 

어떤 그때 렌더링 빨간색과 같이 다음과 같이 표시됩니다.

<% if time.students.exists?(@student) %> 
    <td class="orange">...</td> 
<% else % 
    <td class="normal">...</td> 
<% end % > 

제 질문은 이렇습니다 : 매번 데이터베이스를 다시 질의 할 것인가? 2 모델을 연관 시키거나 포함시키지 않으려면 어떻게해야합니까?

답변

1

나를 위해,이 문제에 대한 가장 효율적인 접근 방법은 js입니다. erb/haml을 사용하여 사용 가능한 모든 교육 시간을 표시 한 다음 학생과 관련된 각 교육 시간을 거치는 js 코드를 추가하십시오. js 코드는 원하는 클래스 인 td 클래스를 변경합니다. 따라서 대부분의 경우 3 개의 검색어 (학생, 모든 교육 시간 및 학생의 교육 시간) 만받습니다.

관련 문제