Ruby-on-Rails : Update_attributes는 모델 유효성을 무시합니까?
-
21-09-2019 - |
문제
전형적인 포스트 모델이 있습니다.
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])
제휴하지 않습니다 StackOverflow