2017-02-07 89 views
0

我有教室和學生模型之間的下列關係:Mongoid後/ before_remove回調沒有被觸發

Classroom has_many :students 
Student belongs_to :classroom 

在我的課堂模式,我有這些關係回調:

has_many :students, 
    after_add: :update_student_count, 
    before_remove: :update_student_count 


    def update_student_count(student) 
    self.student__count = students.count 
    self.save 
    end 

在我的學生控制器我有:

def destroy 
    student = Student.find params[:id] 
    student.destroy! 
    redirect_to action: :index 
end 

但是student.destroy!從不觸發before_remove我的「課堂」模型中的回調。 我曾嘗試寫操作破壞下面的方式來執行摧毀課堂實例行動,但它似乎破壞着這種方式與mongoid使用...

def destroy 
    student = Student.find params[:id] 
    classroom= student.classroom 
    student.destroy! 
    classroom.students.destroy(student) 
    redirect_to action: :index 
    end 

爲什麼我before_remove回調從來沒有執行?

回答

0

剛剛沖洗出來泰迪熊的解決方案,我想你可以做這樣的事情:

class Student 
    belongs_to :classroom 

    after_destroy :update_student_count 
    after_create :update_student_count 

    def update_student_count 
    classroom.update_student_count 
    end 
end 

class Classroom 
    has_many :students 

    def update_student_count 
    self.student__count = students.count 
    save 
    end 
end