我应该使用哪种many_to_many模型来提高数据库查询效率?

时间:2013-02-18 09:03:08

标签: ruby-on-rails database ruby-on-rails-3.2 associations

目前在我的应用中,我有以下型号:

  • 学生(尚未与其他型号相关联)
  • 道场:has_many :training_times
  • TrainingTime: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

然后我将其呈现为:

students#show view

如果培训时间与当前学生相关,那么我想将其突出显示为红色,如下所示:

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

所以我的问题是:每次都会再次查询数据库吗?如何关联/包含2个模型,使其不存在?

1 个答案:

答案 0 :(得分:1)

对我来说,解决这个问题的最有效方法是通过js。使用erb / haml显示所有可用的训练时间,然后添加一个js代码,该代码将通过与学生相关的每个训练时间。 js代码只会改变你想要的td的类。所以最多只能获得3个查询,学生,所有培训时间和学生的培训时间。