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

Rails update another DB counter field when adding record to seperate DB

本文关键字:DB 更新 另一个 字段 计数器 单独 记录 添加 Rails      更新时间:2023-09-26

我的Rails应用程序中有两个数据库,Teachers和Classrooms。一个教室有许多老师,一个老师属于一个教室。对于每个教室,我都有一个"教师人数"字段,该字段应记录指定给特定教室的教师人数,我想这样做的方式是,每次向"教师"中添加新教师时,单击提交按钮后,"教室"中的"教师数"计数器将更新1。我四处寻找了一段时间,似乎找不到解决这个问题的方法,尽管它看起来很简单。谢谢你的帮助!

在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

您必须做的第一件事是将teachers_count列添加到Classroom模型(教室表)中

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

对于以下这样简单的事情似乎需要做很多工作:

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

如果你已经很好地定义了你的模型及其关系,你就不需要特定的领域来知道每个教室的教师人数。