如果我想检查是否存在2字段组合,如何验证Rails 3模型中的唯一性?

joh*_*han 15 model ruby-on-rails-3

我想知道在Rails 3中是否有一种方法,我可以在其中验证组合的2个字段的唯一性.

逻辑是这样的:

我有两个领域employee_codedate_entry.

  • 情况1:如果employee_codedate_entry组合已经存在,它将不允许保存另一个具有相同employee_code和的记录date_entry.

  • 案例2:如果employee_codedate_entry存在,但不是在同一个记录,它将允许救场.

Mik*_*wis 35

validates_uniqueness_of :employee_code, :scope => [:date_entry]
Run Code Online (Sandbox Code Playgroud)

三个或更多列,您需要做的就是在范围列表中添加元素:

validates_uniqueness_of :employee_code, :scope => [:date_entry, :another_column]
Run Code Online (Sandbox Code Playgroud)

或者Rails 3:

validates :employee_code, :uniqueness => {:scope => :date_entry}
Run Code Online (Sandbox Code Playgroud)


joh*_*han 13

这是为Rails 3:

要仅使用2列执行此操作,您可以执行以下操作:

validates:empcode,:uniqueness => {:scope =>:date_entry}

对于超过2列,您可以执行以下操作:

validates:empcode,:uniqueness => {:scope => [:date_entry,:description]}