Ruby on rails 在子更新时更新父模型
我有两个脚手架生成的模型:书和书包。书包里有很多书,一本书属于书包。每本书都有一个重量,每个书包都有一个平均重量,用来储存所有书的平均重量。保持平均体重最新的最佳方法是什么Ruby on rails 在子更新时更新父模型,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我有两个脚手架生成的模型:书和书包。书包里有很多书,一本书属于书包。每本书都有一个重量,每个书包都有一个平均重量,用来储存所有书的平均重量。保持平均体重最新的最佳方法是什么 在书包上使用“保存前”过滤器不起作用,因为它不会在每次更新它所包含的书籍时调用,而且我不想在每次更新书籍时更新平均重量,只在书籍重量发生变化时才更新。快速解决方案可能是这样的: class Book def before_save self.bookbag.update_avg if self.weight_ch
在书包上使用“保存前”过滤器不起作用,因为它不会在每次更新它所包含的书籍时调用,而且我不想在每次更新书籍时更新平均重量,只在书籍重量发生变化时才更新。快速解决方案可能是这样的:
class Book
def before_save
self.bookbag.update_avg if self.weight_changed?
end
end
一个快速的解决方案可能是这样的:
class Book
def before_save
self.bookbag.update_avg if self.weight_changed?
end
end
如果您能够根据需要重新计算平均值,那么还有另一种解决方案
class Bookbag < ActiveRecord::Base
has_many :books
def weight_average
self.books.average(:weight)
end
end
类书包
在这种情况下,您不需要任何回调,并且可以利用数据库的计算能力。如果您能够根据需要重新计算平均值,那么还有另一种解决方案
class Bookbag < ActiveRecord::Base
has_many :books
def weight_average
self.books.average(:weight)
end
end
类书包
在这种情况下,您不需要任何回调,并且可以利用数据库的计算能力