2016-06-07 7 views
0

나는 마이클 하틀의 레일 책을 통해 일하고 있어요, 이것이 어떻게 작동하는지 궁금 해요 :"if @ user.save"가 이런 식으로 사용되는 이유는 무엇입니까?

if @user.save 

else 

end 

을 문, 인수가 실제로 참 또는 거짓 반환 외에 많은 아무것도하지 않는 경우에.

이 메서드는 모델을 데이터베이스에 저장 한 다음 true 또는 false를 반환하는 것으로 보입니다. 이게 공통점인가/내가 맞습니까? 우리는 왜이 방법으로 그렇게합니까?

답변

4

보통 if @user.save은 ActiveRecord를 사용하여 개체가 데이터베이스에 성공적으로 저장되었는지 확인합니다. 거기에서 플래시 메시지를 설정하고 어딘가에 리디렉션 할 수 있습니다. else 절에서 @user.errors을 검사하여 무엇이 잘못되었는지 파악하고 처리 할 수 ​​있습니다. 이 6 장에 설명 된대로 마이클 하틀에 따르면

def create 
    #Set user object attributes using strong parameters 
    @user = User.new(user_params) 

    #Attempt to save @user 
    if @user.save 
    flash[:notice] = 'User saved successfully' 
    redirect_to somewhere_else_url 
    else 
    #Saving failed, we can inspect @user.errors for more information 
    flash[:alert] = 'User was not saved.' 

    #If using a form library @user.errors will be displayed graphically when rendering the :new action 
    render :new 
    end 
end 
+1

하지만 @ user.save가 저장 작업을 수행하고있는 것처럼 보입니다. 데이터베이스에 모델을 저장 한 다음 true를 반환합니다. –

+0

수정. '@ user.save'는 객체를 저장하고 에러없이 저장하는 경우에만 true를 반환하고, 에러가 발생하면 false를 반환합니다. 이를 통해 데이터베이스 저장의 성공 여부에 따라 논리를 작성할 수 있습니다. http://api.rubyonrails.org/classes/ActiveRecord/Persistence.html#method-i-save – danielrsmith

+0

필자는 인수가 true 또는 false를 저장하는 변수 인 if 문에만 익숙하다고 생각합니다. –

2

, 그것은 성공하고, 그렇지 않은 경우는 false 경우 저장 메소드가 true를 돌려 : 예

.

메서드는 유효성 검사와 같은 오류가없고 데이터베이스에 사용자 모델을 저장하면 성공하고 그렇지 않으면 메서드가 끝나고 false를 반환합니다.

제 6 장 here을 참조하고 6.1.3 절을 확인하십시오.