2013-03-15 1 views
5

방금 ​​RoR을 시작했고 질문 : 현재 타임 스탬프 (또는 모든 시간 유형)를 모델에 어떻게 삽입 할 수 있습니까? 아래에서 로그 함수 작성을 확인하십시오.타임 스탬프를 레일스 데이터베이스에 삽입하는 방법

def create 
    @log = Log.new(params[:log]) 

    respond_to do |format| 
     if @log.save 
     format.html { redirect_to @log, notice: 'Log was successfully created.' } 
     format.json { render json: @log, status: :created, location: @log } 
     else 
     format.html { render action: "new" } 
     format.json { render json: @log.errors, status: :unprocessable_entity } 
     end 
    end 
    end 
+0

레일 제너레이터를 사용하여 모델을 생성 했습니까? –

답변

18

레일즈 모델 발생기에서 자동으로 데이터베이스에 created_atupdated_atdatetime 필드를 만듭니다. 이 필드는 레코드가 생성되거나 업데이트 될 때 자동으로 업데이트됩니다.

타임 스탬프를 수동으로 만들려면 날짜 시간 열 (예 :)을 데이터베이스에 추가하고 모델에 before_save 콜백을 사용합니다. 레일을 사용

class Log < ActiveRecord::Base 
    before_save :generate_timestamp 

    def generate_timestamp 
    self.timestamp_field = DateTime.now 
    end 
end 
+0

하지만 타임 스탬프를 삽입 할 것입니다. – venumaer

+0

수동 타임 스탬프의 예를 사용하여 답변을 업데이트했습니다. –

+0

'self.timestamp_field = DateTime.now'을 쓸 필요가 없습니까? –

2

는 예컨대 rails generate model Log 레일 당신을 위해 두 개의 타임 스탬프 필드를 자동으로 생성을 발전기.

created_atupdated_at 당신이 그 기록에 save 또는 Log.createupdated_at 필드를 Log.new을하고 새 레코드를 생성 할 때 레일에 의해 채워집니다 이러한 필드 모두 당신이 기록의 속성을 업데이트 할 경우에만 업데이트되거나됩니다 당신이 방법을 사용할 때 touch 모델의 인스턴스에서.

지금, 당신은 당신이 my_timestamp_field라는 이름의 열을 추가하는 마이그레이션을 생성이

rails generate migration add_some_timestamp_field_to_logs my_timestamp_field:timestamp 

같은 모델에 열을 추가 마이그레이션을 할 수있는 타임 스탬프 형식이 다른 필드를 만들려는 경우 timestamp 유형과 동일합니다. created_atupdated_at

관련 문제