문제

전형적인 포스트 모델이 있습니다.

class Post< ActiveRecord::Base
    validates_presence_of :user_id                                   #Line 1
    validates_presence_of :title,:body                               #Line 2

컨트롤러에는 다음과 같습니다.

def create
   if request.post? 
       if login_required
           @post = Post.new(params[:post])                            #Line 3
           @post .update_attribute("user_id",session[:userid])        #Line 4

그러나 2 행의 유효성 검사가 실패하면 4 행이 언급되지 않으면 게시물이 여전히 생성됩니다.

1) 왜?

2) 수정에 대한 제안?

감사

도움이 되었습니까?

해결책

입구에서 update_attribute 안에 activerecord :: 지속성의 문서:

단일 속성을 업데이트하고 일반 유효성 검사 절차를 거치지 않고 레코드를 저장합니다. 이것은 기존 레코드의 부울 깃발에 특히 유용합니다.

레코드에 대한 빠른 조정을 할 때 검증 오버 헤드를 피하는 데 도움이되는 허점 인 것 같습니다. 유효성 검사를 원한다면 사용하십시오

@post.update_attributes(:user_id => session[:userid])
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top