列上的唯一约束,不包括空值

时间:2013-06-24 16:03:32

标签: ruby ruby-on-rails-3 sqlite3-ruby

我有一个用户数据库,它有公司列,它可以是空的,即null或可能包含一些值。但如果包含任何值,它应该是唯一的。如果我在模型中使用unique属性,则不允许为列提供多个空值。我正在使用Sqlite3 db。

1 个答案:

答案 0 :(得分:0)

您可以使用模型验证来处理它。也许是这样的:

class User < ActiveRecord::Base
  attr_accessible :company

  validate do
    if self.company && User.where(company: self.company).first
      raise ArgumentError, "Company must be `nil` or unique"
    end
  end
end

这有点像黑客,但它应该符合你的需求。