2013-06-24 2 views
-1

사용자 열이 있습니다. 회사 열이 있습니다. 즉 비어 있거나 null이거나 일부 값이 포함될 수 있습니다. 그러나 어떤 가치가 포함되어 있다면 그것은 유일해야합니다. 내 모델에서 고유 속성을 사용하는 경우 열에 대해 여러 개의 null 값을 허용하지 않습니다. Sqlite3 db 사용하고 있습니다.null 값을 제외한 열의 고유 제한

+0

중복 : http://stackoverflow.com/questions/191421/how-to-create-a-unique-index-on-a-null-column – forker

+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 

이것은 약간의 해킹이지만 사용자의 요구에 맞아야합니다.

+0

'User.where (company : self.company) .exists?'가'first'보다 나은 접근 방법 일 수 있습니다. –

+0

내가이 기능을 수행하면 새 사용자가 만들어 질 때마다 실행하고 싶습니다. 어떻게 그렇게 할 수 있을까요? –

+0

'validates'는'User'가 생성되거나 업데이트 될 때마다 실행될 것이기 때문에 별도의 메소드를 생성 할 필요가 없습니다. – Eugene

관련 문제