2012-05-25 2 views
1

다음 코드 (레일 3.0.10)을 가지고? 또는 다른 말로하면, 어떻게 확인할 수 있도록 유효성 검사가 여전히 존재합니까? 아니면 뭔가 잘못하고있는 걸까요?validates_presence_of 및 저장되지 않은 단체

깨끗한 솔루션을 찾고 있습니다. 따라서 사용자 모델을 데이터베이스에 저장하는 공급자 모델에서 유효성 검사 콜백을 제안하면 다시 시도 할 필요가 없습니다.

답변

3

사용 :

class User < ActiveRecord::Base 
    has_many :providers, :inverse_of => :user 
end 

class Provider < ActiveRecord::Base 
    belongs_to :user, :inverse_of => :providers 
    validates :user, :presence => true 
end 
+0

inverse_of *입니다 레일 *에서 좋은 생각 - 증거? – jdoe

+0

많은 경험. OP의 코드가 작동하지 않는다는 사실 등 – iHiD

+0

"나쁜 아이디어"... pfff. 그것은 기본적으로 중첩 된 속성과 동일한 거래입니다 - 당신은 그것들을 나쁜 생각이라고 생각합니까? 어쨌든 긴 이야기는 짧습니다. Omniauth와 Twitter가 정확해야합니다. 트위터는 비어있는 사용자 레코드를 저장하고 싶지 않은 전자 메일을 제공하지 않기 때문에 요청간에 발생하기 때문에 트랜잭션으로 롤업 할 수 없습니다. 따라서 두 모델을 먼저 작성하고 두 모델이 모두 유효한 경우에만 저장해야합니다. 아. 그리고 나. 세이브 콜을 하는게 아니야. Devise가 그렇게합니다. –

관련 문제