从另一个更新一个模型

时间:2017-10-31 12:55:27

标签: ruby-on-rails model-view-controller

我有两个模型互相交互。每个课程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

1 个答案:

答案 0 :(得分:0)

希望这有效

def update_places!
  remaining_places = Reservation.where(course_id: self.id).sum(:remaining_places)
  self.update_column(:course_places, remaining_places)
end