반응형
열, 모든 행 업데이트
내 테이블에 새 열을 추가했지만 : default 옵션을 추가하는 것을 잊었습니다. 이제 모든 행에 해당 열을 채우고 싶습니다.
콘솔을 사용하는 방법이 있습니까? 지난 한 시간 동안 Google을 검색했지만 아무것도 찾을 수 없습니다.
단일 개체에 대해 수행하는 방법을 알고 있지만 모델의 모든 항목에 대해서는 아닙니다. Foo.find (1) .update_attribute (: myattribute, 'value')
이 시도:
Foo.update_all(some_column: "bar")
그러면 데이터베이스에 대한 SQL 쿼리가 생성됩니다.
UPDATE "foos" SET "some_column" = "bar";
이전 마이그레이션에서 이미 새 필드를 만들었으므로 완전히 새로운 마이그레이션을 만듭니다.
rails g migration UpdateFoos
마이그레이션 수정 :
def self.up
say_with_time "Updating foos..." do
Foo.find(:all).each do |f|
f.update_attribute :myattribute, 'value'
end
end
end
# from command line
Rake db:migrate
이것이 작동하는지 알려주세요. 몇 가지 조정이 필요할 수 있습니다. 자세한 내용은 rails 문서 를 참조하십시오 .
다음과 같이 할 수 있습니다.
Foo.update_all (new_column : "bar")
물론과 같은 smth를 사용할 수 Foo.update_all(:myattribute => "value")
있지만 이미 생성 된 데이터 만 수정합니다. 모든 "미래"데이터에 대한 기본값을 설정하려면 다음과 같이 별도의 마이그레이션을 만드는 것이 좋습니다.
rails generate migration AddDefaultValueToFoo
다음과 같이 새 마이그레이션을 수정합니다 (예 : myattribute에 문자열 유형이 있음).
class AddDefaultValueToFoo < ActiveRecord::Migration
def self.up
change_column :foos, :myattribute, :string, :default => "value"
Foo.update_all(:myattribute => "value")
end
end
참고 URL : https://stackoverflow.com/questions/4512696/update-a-column-all-rows
반응형
'Programing' 카테고리의 다른 글
Elixir 목록이나 튜플에 항목이 있는지 확인하는 방법은 무엇입니까? (0) | 2020.10.29 |
---|---|
Spring에서 ref bean에 메서드를 호출 한 결과를 주입 할 수 있습니까? (0) | 2020.10.29 |
jQuery를 사용하여 div에서 id 속성을 제거하는 방법은 무엇입니까? (0) | 2020.10.29 |
스트림을 열지 못했습니다 : HTTP 래퍼가 쓰기 가능한 연결을 지원하지 않습니다. (0) | 2020.10.29 |
배열로 선택하는 방법은 psql의 값 절을 포함합니다. (0) | 2020.10.29 |