防止删除某些字段为非空白的记录

时间:2019-07-16 01:35:32

标签: ruby-on-rails ruby-on-rails-5

如果我具有如下的Widget模型:

create_table "widgets", id: :serial, force: :cascade do |t|
  t.string "name"
  t.integer "quantity"
end

...如果quantity为nil或零以外的值,如何防止销毁操作?我认为这是我应该在模型中而不是控制器中做的事情?

1 个答案:

答案 0 :(得分:1)

我知道了:

class Widget < ApplicationRecord

  before_destroy :ensure_quantity_blank

protected

  def ensure_quantity_blank
    if !self.quantity.blank?
      errors.add(:quantity, "Cannot delete widget with a quantity")
      throw(:abort)
    end
  end

end

另请参阅How do I 'validate' on destroy in rails