2017-02-22 3 views
-1

레일에 조건에 따라 ActiveRecords을 수정 내가 모든 게시물을 나열하고대량 또한 내가 ㄱ USER_ID로 로그인 한 사용자, 나는이 열 author_id '와 모델의 게시물이 5

:

posts = Post.all 
author_id 현재 USER_ID 동일한 경우이 게시물 객체에서

나는 모든 게시물에 대한 확인하려면 그렇다면, 나는

is_author => true 

내가 내 모드에서이 작업을 수행해야합니다 알고있는 객체에 새 필드를 추가 할 엘,하지만 몇 가지 이유가있을 수 없습니다.

또 다른 해결책은 모든 게시물을 통해 루프하고 새 필드 추가합니다 :

post_with_author = [] 

post.each do |post| 
    add post to new array with new field 
end 

을하지만이 최선의 선택이 될 것 같지 않습니다.

이렇게하는 방법이 있습니까?

답변

1

당신이 게시물에 정의 author_id했기 때문에, 당신이 할 수

posts = Post.where(author_id: user_id).update_all(author: true) 

이 구성하고 단일 SQL UPDATE 문을 실행하고 각 게시물에 대한 객체를 생성하지 않습니다. 여기에서 주목해야 할 중요한 점은 update_all이 모든 유효성 검사와 콜백을 건너 뜁니다.