2012-06-12 3 views
25
Post 
    :belongs_to :user 

User 
    :has_many :posts 

내 가입 절차에서는 처음으로 게시물을 초안 한 다음 가입 할 사용자 정보를 입력합니다.저장하지 않고 유효성 검사 오류 메시지 받기

# intermediate step, validate that Post is valid before moving on to User creation 
# posts_controller: 

@post = Post.new(params[:post]) 
if @post.valid? 
    # go on to create User 
else 
    render 'new' 
end 

그러나! @ post 모델을 저장하지 않으므로 @ post 오류 메시지가 생성되지 않습니다. 단지 .valid?을 확인하고 있습니다. 저장하지 않고 오류 메시지를 작성하려면 어떻게합니까?

답변

44

질문을 올바르게 이해하면 모델을 저장하지 않고 오류를 확인하고 싶습니까?

정확히 무슨 일이 일어나고 있는지. @post.valid?

은 오류가 있는지 여부에 따라 true 또는 false를 반환합니다. 오류가있는 경우. 그들은 @post.errors 해시에 추가됩니다. 방금 성공적으로 저장 또는 false 경우 공정

+0

당신이 올바른지에 @post.errors을 채우는 동안 오류가 존재하는 경우는 true를 돌려줍니다 @post.save 전화를 저장할 상황에서

. 제대로 @ post.errors를 표시하지 않았습니다. 감사! – brittohalloran

5

documentation에 따르면 #valid? 또는 #invalid?을 레코드에 호출하면 #errors이 채워집니다.

관련 문제