我有两个模型互相交互。每个课程has_many预订,保存预订后我想更新课程:course_places属性减去刚刚进行的预订数量(等于我在预订控制器中创建的remaining_places方法)。我希望这是有道理的。
我一直在尝试使用这个答案作为灵感,但它不起作用,因为课程update_places!方法不知道它引用https://stackoverflow.com/a/19169367/6103550
的预约任何建议都会受到热烈欢迎!感谢
错误
undefined method `reservation' for #<Course:0x007f832c1f5020> Did you mean? reservations reservations=
课程模型
class Course < ApplicationRecord
belongs_to :listing, optional: true
has_many :reservations
def update_places!
self.update_column(:course_places, self.reservation.sum(:remaining_places))
end
end
预订模式
class Reservation < ApplicationRecord
belongs_to :user
belongs_to :course
belongs_to :listing
after_save :update_course_places
def update_course_places
self.course.update_places!
end
end
答案 0 :(得分:0)
希望这有效
def update_places!
remaining_places = Reservation.where(course_id: self.id).sum(:remaining_places)
self.update_column(:course_places, remaining_places)
end