gpt4 book ai didi

ruby-on-rails-3 - Rails 3 验证唯一性忽略模型上的默认范围

转载 作者:行者123 更新时间:2023-12-03 00:52:37 24 4
gpt4 key购买 nike

我在 Rails 3.0.10 应用程序中使用 permanent_records gem,以防止硬删除,并且 Rails 似乎在检查唯一性时忽略了我的默认范围

# user.rb
class User < AR::Base
default_scope where(:deleted_at => nil)

validates_uniqueness_of :email # done by devise
end

在我的 Rails 控制台中,尝试通过已删除的电子邮件查找用户会导致 null,但是当使用已删除的电子邮件地址注册新帐户时,会导调用子邮件字段出现验证错误。

我的应用程序中的另一个模型也是如此

# group.rb
class Group < AR::Base
default_scope where(:deleted_at => nil)
validates_uniqueness_of :class_name
end

这与以前的情况相同,删除一个组然后尝试通过类名查找它会导致 nil,但是当我尝试创建一个具有已知已删除类名的组时,它会失败验证。

有人知道我是否做错了什么,或者我应该为此行为编写自定义验证器吗?

最佳答案

尝试使用deleted_at确定唯一性检查的范围

validates_uniqueness_of : email, :scope => :deleted_at

这可以允许两条记录具有相同的电子邮件值,只要两条记录的deleted_at字段不同即可。只要用正确的时间戳填充deleted at(我猜permanent_records gem就是这样做的),这应该可以工作。

关于ruby-on-rails-3 - Rails 3 验证唯一性忽略模型上的默认范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7212489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com