代码之家  ›  专栏  ›  技术社区  ›  BvuRVKyUVlViVIc7

Authlogic,rails3_充当偏执狂并验证:login+default_scope的唯一性(:conditions=>{:active=>true})

  •  3
  • BvuRVKyUVlViVIc7  · 技术社区  · 15 年前

    我希望能够创建多个用户帐户与相同的登录(因为情况下,一个用户删除他的帐户。。。然后使用相同的登录名注册)。我用的是authlogic,rails3是偏执狂。

    但存在一个问题:Authlogic验证登录字段的唯一性,并忽略默认范围(:conditions=>{:active=>true})。

    (请参阅无效错误报告的更多详细信息: https://rails.lighthouseapp.com/projects/8994/tickets/4064-validates_uniqueness_of-should-honor-default_scope-or-not )

    1 回复  |  直到 15 年前
        1
  •  2
  •   charlescui    15 年前

    验证

    ActiveRecord的内置唯一性验证不考虑actsasparinoid删除的记录。如果只想检查未删除记录的唯一性,请在模型中使用宏validates_as_paranoid。然后,不要使用validates_university_of,而是使用validates_university_of_而不删除。这将使已删除的记录不在唯一性检查的计数范围内。

    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
    

    推荐文章