2011-12-26 35 views
6

Trong dự án của tôi, chiết khấu có và thuộc về nhiều doanh nghiệp. Tôi có một nguyên tắc gọi lại hiệp hội giảm giá không thể loại bỏ businss cuối cùng của nó (để duy trì rằng luôn luôn có một businss cho mỗi giảm giá):Cách bỏ qua gọi lại liên kết trong tiêu hủy

has_and_belongs_to_many :businesses, 
    before_remove: :check_count, 

def check_count 
    raise 'Cannot remove latest business!' if businesses.count == 1 
end 

Tuy nhiên tôi nhận ra rằng tôi sẽ không thể để loại bỏ giảm giá . Kể từ khi tôi làm discount.destroy, tôi nghĩ rằng nó sẽ cố gắng để loại bỏ các doanh nghiệp, và trong thời hạn sẽ nâng cao lỗi.

Vì vậy, có cách nào đó xung quanh điều này, như một số loại :except như trong bộ điều khiển?

+1

Kiểm tra tại đây: http://guides.rubyonrails.org/active_record_validations_callbacks.html#skipping-callbacks –

Trả lời

14

Bạn có thể gọi discount.delete để bỏ qua các cuộc gọi lại.

+0

Tôi vẫn muốn duy trì tính toàn vẹn. Tôi đoán quy tắc gọi lại của tôi không được thiết kế đúng cách. – lulalala

Các vấn đề liên quan