Ruby on Rails 웹 응용 프로그램을 작성 중입니다. 하나 이상의 필드의 고유성을 함께 검증하려고합니다. 내가 어떻게 할 수 있니?세 개의 다른 필드에서 유일 함
예를 들면 : 나는 세 개의 필드로 waiting
라는 이름의 모델을 가지고 :
project_id
category_id
나는 내가 의 모든 세 개의 필드를 두 개의 동일한 행이되지 않도록 할
user_id
.
Ruby on Rails 웹 응용 프로그램을 작성 중입니다. 하나 이상의 필드의 고유성을 함께 검증하려고합니다. 내가 어떻게 할 수 있니?세 개의 다른 필드에서 유일 함
예를 들면 : 나는 세 개의 필드로 waiting
라는 이름의 모델을 가지고 :
project_id
category_id
나는 내가 의 모든 세 개의 필드를 두 개의 동일한 행이되지 않도록 할
user_id
.
왜 그냥에 :
validates_uniqueness_of :user_id, :scope => [:project_id, :category_id]
+
add_index :waitings, [:project_id, :category_id, :user_id], :unique => true
읽기 API :
꽤 아니지만 이것은 나를 위해 작동 :
이class Waiting < ActiveRecord::Base
validate :must_be_unique
def must_be_unique
if self.class.where(project_id: project_id, category_id: category_id, user_id: user_id).exists?
errors.add(:base, 'Must be unique')
end
end
end
물론 당신이 당신 DB 스키마에서 고유 키를 사용할 수 있습니다 다음, 당신이 필요로하는 드문 경우에 관련 예외를 잡을 수있어.
조금 더 청결한 것을 찾는 ... 더 많은 레일 ... – Nayish
충분히. 이것을 위해 새로운 EachValidator를 구현할 수 있어야합니다. 나는 확실히 하나를보고 싶습니다. – noodl