Rails - 是否有可能找到违反唯一验证的记录
Rails - is it possible to find the record that violates unique validation
以下面为例
class SuperHero < ActiveRecord::Base
validates :weapon, uniqueness: true
end
所以当我创建
SuperHero.create!(name: "Thor", weapon: "hammer")
SuperHero.create!(name: "Spiderman", weapon: "hammer") => Weapon has already been taken
是否可以使用默认的唯一验证添加错误消息 Weapon has already been taken by Thor
?以便用户可以轻松找到当前武器分配给谁?
您将需要实施自己的验证。像这样:
class SuperHero < ActiveRecord::Base
validates :weapon, uniqueness: true
before_validation -> {
existing_super_hero = SuperHero.find_by_weapon self.weapon
if existing_super_hero && existing_super_hero.id != self.id
self.errors.add(:base, "Weapon has already been taken by #{existing_super_hero.name}")
throw :abort
end
}
end
以下面为例
class SuperHero < ActiveRecord::Base
validates :weapon, uniqueness: true
end
所以当我创建
SuperHero.create!(name: "Thor", weapon: "hammer")
SuperHero.create!(name: "Spiderman", weapon: "hammer") => Weapon has already been taken
是否可以使用默认的唯一验证添加错误消息 Weapon has already been taken by Thor
?以便用户可以轻松找到当前武器分配给谁?
您将需要实施自己的验证。像这样:
class SuperHero < ActiveRecord::Base
validates :weapon, uniqueness: true
before_validation -> {
existing_super_hero = SuperHero.find_by_weapon self.weapon
if existing_super_hero && existing_super_hero.id != self.id
self.errors.add(:base, "Weapon has already been taken by #{existing_super_hero.name}")
throw :abort
end
}
end