如何通过合并操作使字段唯一?

时间:2012-11-09 23:07:22

标签: ruby-on-rails ruby-on-rails-3 activerecord arel activemodel

class Person
  validates :full_name, presence: true
  validates :display_name, unique: ???
  attr_acessible :full_name, :display_name
end

全名不能是唯一的,但显示名称必须是唯一的。如果我想将full_name作为后备,但我仍然想检查display_name的唯一性。

验证coalesce(display_name, full_name)的唯一性或实现相同效果所需的最简洁方法的最简洁方法是什么?

1 个答案:

答案 0 :(得分:-1)

这可能是你想要的,如果不是,请进一步解释合并 validates :display_name, uniqueness => true

<强>更新

在评论中的其他信息之后

validates :display_name, :uniqueness => {:scope => :full_name}

如果这不符合您的要求,那么

validates :coalesce

def coalesce
  #put your validation in the method here i.e
  if self.display_name == false
    #then check full_name etc.
  end
end