我有一个表输入车辆名称,型号名称是车辆 我不想要名字重复......所以我有
validates_uniqueness_of :make, :case_sensitive => false
在我的模特中。我通过将is_deleted标志字段设置为true来使用软删除来删除记录。此is_deleted列也存在于Vehicle模型中。
所以问题是如果我删除1个表它只是软删除它,当我尝试创建一个具有相同名称的软件删除的车辆时,由于验证错误发生,因为该字段不是从DB中原始删除的。
有没有一种简单的方法可以解决这个问题。
答案 0 :(得分:0)
我相信这应该可以解决问题:
validates_uniqueness_of :make, :case_sensitive => false, unless: :is_deleted
答案 1 :(得分:-1)
<强>条件强>
从它的声音中,您将要使用条件验证,该条件验证将查找具有约束的名称,而不将is_deleted?
属性设置为true:
#app/models/your_model.rb
Class YourModel < ActiveRecord::Base
validates :make, uniqueness: { scope: :name, message: "Only One Name Allowed Sorry!" }, if: :is_unique?
def is_unique?
return Model.find_by({name: name, is_deleted: false}) #-> will look up any data records which have is_deleted as false & same name
end
end