부모 모델에서 상속 한 모델의 수를 확인하고 고유하게 유지하려고 시도합니다.RoR STI 모든 상위 모델 인스턴스에 대한 각 유형의 단일
그래서 나는 또한 그래서 이것에 대한 하나의 테이블 상속을 사용하고
User has_many :parents
Parent belongs_to :user
있습니다
이rails g model Type1Parent --parent=Parent
전반적인 내가 3 가지 유형이 있으므로 Type1Parent, Type2Parent, Type3Parent.
모든 사용자 반드시 내가이 작업을 수행하려고하면 예를 들어
type1parent = user.type1parents.new
type1parent.save #=> OK!
있도록하지만는 각 유형의 하나이 다시
type1parent = user.type1parents.new
type1parent.save #=> Error: User already has a type1parents
뿐만 아니라 을 만들 수 동일한 사용자의 type2parent.
그래서 모든 사용자에 대해 각 유형의 단일 존재를 어떻게 확인할 수 있습니까?
당신은에 고유성 유효성 검사를 추가 할 수 있습니다
parents
테이블에type, user_id
에 고유 인덱스를 추가 @MrYoshiji에 의해 제안 또한validates :type, uniqueness: { scope: :user_id }
사용자 모델을 생성 한 다음, 사용자에게'autosave'를 사용하도록 관계 부모를 만든다 (그래서 그것은 사용자의 검증을 유발할 것이다). 'parents' 테이블의'(type, user_id)'에 유일한 인덱스를 생성 할 것을 강력히 권장합니다. 그래서 어떤 점에서이 유일성을 다시 확인하지 않았다면 DB는 여전히이 규칙을 보장 할 것입니다. – MrYoshiji