0

現在、私のアプリには次のモデルがあります。

  • 学生(他のモデルにはまだ接続されていません)
  • 道場:has_many :training_times
  • トレーニングの時間:belongs_to :dojo

学生には多くのトレーニング時間を与え、トレーニング時間には多くの学生が必要です。

現在、学生コントローラーには次のものがあります。

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 つのモデルを関連付けたり含めたりしないようにするにはどうすればよいですか?

4

1 に答える 1

1

私にとって、この問題への最も効率的なアプローチは、js を使用することです。erb/haml を使用して利用可能なすべてのトレーニング時間を表示し、生徒に関連する各トレーニング時間を通過する js コードを追加します。js コードは、必要な td のクラスを変更するだけです。したがって、最大で、学生、すべてのトレーニング時間、および学生のトレーニング時間の 3 つのクエリしか取得できません。

于 2013-02-18T09:58:49.243 に答える