2011-04-21 6 views
1

activerecord의 특정 조건에 따라 테이블 값을 업데이트하는 가장 좋은 방법은 무엇입니까? 나는 이것을 시도했다레일즈 방식으로 조건에 따라 데이터 업데이트

Suggestion.update(:active => 1).where({:item_id => 2, :user_id => 100}) 

그러나 작동하지 않는다. 업데이트 메서드는 다른 매개 변수 (id)를 필요로합니다. 이런 식으로 쿼리를 변경하면

suggest = Suggestion.where({:item_id => 2, :user_id => 100}).select(:id) 
    id = suggest.first.id 
    Suggestion.Update(id,:active => 1) 

내가 완전히 불면. 단일 업데이트 호출에서 수행 할 수있는 레코드를 업데이트하기 위해 db를 두 번 호출해야하는 이유는 무엇입니까?

답변

6
Suggestion.update_all({:active => 1}, {:item_id => 2, :user_id => 100}) 

=>

UPDATE "suggestions" SET "active" = 1 WHERE ("suggestions"."item_id" = 2) AND ("suggestions"."user_id" = 100) 
+0

덕분에 친구, 그것을 작동합니다 ... – RameshVel

관련 문제