저는 레일즈 3.0을 실행 중입니다. 부울 필드를 변경하려고하지만 update_at 타임 스탬프를 변경하지 않으려는 객체가 있습니다. 우리는 곧 레일을 업그레이드하지 않으므로 update_column은 문제가되지 않습니다. 이 유형의 많은 객체가 동시에 호출 된 메소드를 가질 수 있기 때문에 차라리이 (예 : http://blog.bigbinary.com/2009/01/21/override-automatic-timestamp-in-activerecord-rails.html)을 지원하기 위해 모델 수준의 변경을하지 않을 것입니다.updated_at 필드를 변경하지 않고 속성을 업데이트하십시오.
답변
당신은 .update_all 사용할 수 있습니다
User.where(:id => @user.id).update_all(:your_bool_field => true)
, 고마워요! –
콜백을 유발하지 않도록주의하십시오. – mahemoff
업데이트 전에 record_timestamps 속성을 false로 설정할 수 있습니다. 자세한 내용은
User.record_timestamps=false
User.first.update_attributes(:field1 => "Test")
User.record_timestamps=true
: http://blog.bigbinary.com/2009/01/21/override-automatic-timestamp-in-activerecord-rails.html
레일 (5)는 타임 스탬프를 업데이트하지 않고 기록을 갱신 할 수 있습니다. 우리는 액티브 오브젝트를 저장 레일 4.x의에서
후 레일은 자동으로 필드를 ActiveRecord::Base#save
터치 옵션의 updated_at
또는 updated_on
추가 업데이트됩니다.
레일 5에서 touch: false
을 저장 옵션으로 전달하여 타임 스탬프를 업데이트하지 않고 개체를 업데이트 할 수 있습니다. touch
의 기본 옵션은 true
입니다.
>> user = User.new(name: 'David', email: '[email protected]')
>> user.save
INSERT INTO "users" ("name", "created_at", "updated_at", "email") VALUES (?, ?, ?, ?)
[["name", "John"], ["created_at", 2016-05-12 05:10:22 UTC], ["updated_at", 2016-05-12 05:10:22 UTC], ["email", "[email protected]"]]
=> true
>> user.updated_at
=> Thu, 12 May 2016 05:10:22 UTC +00:00
>> user.name = "John"
>> user.save(touch: false)
UPDATE "users" SET "name" = ? WHERE "users"."id" = ? [["name", "John"], ["id", 12]]
=> true
>> user.updated_at
=> Thu, 12 May 2016 05:10:22 UTC +00:00
- 1. rails_admin에서 비밀번호를 변경하지 않고 사용자 속성을 업데이트하십시오.
- 2. 인스턴스를 깨지 않고 C# 개체 속성을 업데이트하십시오.
- 3. 레일 레코드에 updated_at 변경
- 4. GWT MVP 활동을 변경하지 않고 기록 토큰을 업데이트하십시오.
- 5. 필드를 1 PDO로 업데이트하십시오.
- 6. 동일한 테이블의 필드를 기반으로 oldID 필드를 업데이트하십시오.
- 7. 컨트롤러 내에서 클래스 속성을 업데이트하십시오.
- 8. 양식을 열지 않고 표 및 계산 된 필드를 업데이트하십시오.
- 9. 내부에서 자식을 변경하지 않고 Sprite에 scaleX 속성을 설정하십시오.
- 10. 변경하지 않고 URL 디코딩 +
- 11. 변경하지 않고 클로즈드 헤드
- 12. 변경하지 않고 선택하십시오.
- 13. SQL 테이블의 모든 필드를 업데이트하십시오.
- 14. 데이터베이스 필드를 CodeIgniter의 배열로 업데이트하십시오.
- 15. 배열 내의 필드를 찾고 업데이트하십시오.
- 16. 다른 선택 쿼리에서 필드를 업데이트하십시오.
- 17. 레일 오버라이드 updated_at 속성
- 18. javascript가 html 속성을 변경하지 않습니다.
- 19. 모델의 "updated_at"필드를 열 업데이트의 하위 집합에 대해서만 업데이트하는 방법?
- 20. 데이터베이스에서 검색하지 않고 SQL 레코드를 업데이트하십시오.
- 21. URL을 변경하지 않고 Django 페이지에 양식을 제출하십시오.
- 22. 리프레시하지 않고 포커스를 자동으로 업데이트하십시오.
- 23. 값을 건드리지 않고 항목을 업데이트하십시오.
- 24. 중복을 만들지 않고 DB를 업데이트하십시오.
- 25. 배포하지 않고 어셈블리를 다시 업데이트하십시오.
- 26. 백그라운드를 변경하지 않고 작업을 시작합니다.
- 27. URL을 변경하지 않고 리디렉션 하시겠습니까?
- 28. 브라우저에서 주소를 변경하지 않고 RewriteRule
- 29. window.location을 변경하지 않고 백본 사용
- 30. 페이지를 변경하지 않고 php에서 에코하기
항상 원시 SQL을 실행할 수 있습니까? –
가능한 [자동으로 레일 타임 스탬프 필드를 업데이트하지 않도록하는 방법이 있습니까?] (http://stackoverflow.com/questions/861448/is-there-a-way-to-avoid-automatically-updating-rails-timestamp -fields) –