在将记录添加到单独的DB时,Rails会更新另一个DB计数器字段

时间:2016-07-28 15:21:44

标签: javascript ruby-on-rails

我的Rails应用程序中有两个数据库,教师和教室。教室里有很多老师,老师也属于教室。对于每个课堂,我都有一个“教师数量”字段,应该跟踪分配给特定教室的教师数量,我想这样做的方式是每次向教师添加新教师时,“教师在教室中的计数器在单击提交按钮时更新为1。我现在已经看了一会儿,虽然看起来很简单,但似乎无法找到解决方案。谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

对于像以下这样简单的事情看似很多工作:

classroom = Classroom.find_by(id: classroom_id)
var number_of_teachers = classroom.teachers.count

如果您已经很好地定义了模型及其关系,那么您就不需要特定的领域来了解每个教室的教师数量。

答案 1 :(得分:0)

在rails中,我们有一个计数器缓存的概念,你应该看一下这个概念 请检查链接 http://yerb.net/blog/2014/03/13/three-easy-steps-to-using-counter-caches-in-rails/

<强>模型

class Classrooms < ActiveRecord::Base
  has_many :teachers
end

class Teachers < ActiveRecord::Base
  belongs_to :classroom, :counter_cache => true
end

您要做的第一件事是将teacher_count列添加到Classroom模型(教室表)

然后,当您为教室添加或删除教师时,计数器缓存将自动更新计数