1

이 문장의 DB 무신론자 버전을 찾고 :레일 액티브 : 나는 MySQL의 서버에 대해이 작업을 실행하는 마이그레이션을

ActiveRecord::Base.connection.execute("update 'comments' set 'slug' = NULL;")

는이 문장의 목적은

는 "슬러그"의 값을 제거합니다 각 행에 대해
표는 무신론자 또는 최소 dB입니다 MySQL과 사이에 OK 작동하는 방식으로이 쿼리를 다시 작성하는 방법이 있나요 그 안에 수백만 개의 행을 가지고 있으며, Comment.each...

같은 것을 할 루비를 사용할 때 매우 느립니다 postgresql?

감사합니다.

답변

4
Comment.update_all(:slug => nil) 

이 쿼리 UPDATE "comments" SET "slug" = NULL

또한 범위 및 조건에 일괄 업데이트를 할 수를 생성합니다. 예를 들어, 당신은 할 수 있습니다 :

Comment.where(:some_attribute => "some_value").update_all(:slug => nil) 

을 도대체 내가 이상 그 모습 않았다 방법, UPDATE "comments" SET "slug" = NULL WHERE (some_attribute = 'some_value')

+0

좋은 주인을 생산하는 것 그. 나는 부끄러워하며 정답으로 선택하겠습니다. 고맙습니다!! –

+1

+1하지만 MySQL은 'SET SQL_MODE ='ANSI '또는'ANSI_QUOTES '인 경우에만 식별자 구분 기호로 큰 따옴표를 인식합니다. http://dev.mysql.com/doc/refman/5.1/en/을 참조하십시오. server-sql-mode.html –

+0

사실,이 것은 사용중인 활성 레코드 어댑터에 대해 생성되는 SQL입니다. 데모 용으로 sqlite3 어댑터입니다. Rails의 장점은 내가 보여 주었던 것처럼, 독립적 인 방식으로 쿼리를 작성한다는 것입니다. 이는 기본 어댑터가 제대로 실행한다는 것입니다. +1 해줘서 고마워! –

관련 문제