2014-10-12 1 views
0

created_at 필드에 타임 스탬프가 할당되는시기는 언제입니까? 모델 객체가 생성되거나 db 트랜잭션이 완료되면?ActiveRecord created_at 및 순차적 일관성 적용

기본적으로 데이터베이스 (Postgres)의 순차적 일관성에 의존 할 수 있는지 확인하고 싶습니다. 예 : 사용자가 타임 스탬프 (예 : 시간 X보다 새로운 모든 메시지 제공)를 사용하여 새 메시지를 가져 오는 채팅 시스템이 있습니다. 사용자가 데이터베이스의 일관된 스냅 샷을보고 있는지 확인하고 싶습니다 .

답변

0

ActiveRecord 콜백 after_validationbefore_create을 사용하여이를 테스트 할 수 있습니다.

새 모델 객체를 만들 때 created_at 필드는 created_at 타임 스탬프가 모델이 실제로 데이터베이스에 지속되기 직전에 기록되는 것을 제안하는 before_create 콜백 중에 존재하는 after_validation 콜백 동안 전무하지만 (하지만 이후 모델 수준 유효성 검사가 발생 함).

config.active_record.record_timestamps = false을 설정하여 기본 레일 동작을 무시할 수있는 것 같습니다. 그런 다음 원하는 프로세스의 모든 지점에 created_at 필드를 할당 할 수 있습니다. 다행히 그게 당신의 질문에 대답하는 데 도움이됩니다!

여기에 타임 스탬프 (http://api.rubyonrails.org/classes/ActiveRecord/Timestamp.html) 및 콜백 (http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html)에 대한 자세한 정보가 있습니다.

+0

감사합니다. 객체 생성 후 타임 스탬프를 설정하는 것은 이상한 일이지만 - 추가 저장 (DB 로의 이동)이 필요하고 일관성 문제를 해결하지 못합니다 – EugeneMi