Authlogic,rails3_acts_as_paranoid和validates_uniqueness_of:login + default_scope(:conditions => {:active => true})。 (注:这是一个提问标题,不需要回答)

3
我希望能够创建多个具有相同登录名的用户账户(因为如果一个用户删除了他的账户,然后使用相同的登录名重新注册)。我正在使用authlogic和rails3_acts_as_paranoid。
但是出现了一个问题:Authlogic验证登录字段的唯一性,并忽略default_scope(:conditions => {:active => true})。
(请参见无效错误报告的详细信息:https://rails.lighthouseapp.com/projects/8994/tickets/4064-validates_uniqueness_of-should-honor-default_scope-or-not
我没有找到如何告诉validates_uniqueness_of使用默认范围...你能帮我吗?
1个回答

2

验证

ActiveRecord内置的唯一性验证无法考虑被ActsAsParanoid删除的记录。如果您想仅检查未删除的记录的唯一性,请在模型中使用宏validates_as_paranoid。然后,不要使用validates_uniqueness_of,而是使用validates_uniqueness_of_without_deleted。这将防止已删除的记录对唯一性检查产生影响。

class Paranoiac < ActiveRecord::Base
  acts_as_paranoid
  validates_as_paranoid
  validates_uniqueness_of_without_deleted :name
end

Paranoiac.create(:name => 'foo').destroy
Paranoiac.new(:name => 'foo').valid? #=> true

祝你好运


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接