LoginSignup
0
0

More than 5 years have passed since last update.

rails3系でtime属性カラムへの初期値の与え方

Last updated at Posted at 2014-01-08

migrationファイルでdefault値を指定することはできないようでした。そこで、
hoges_controller.rbにて

class Hoge < ActiveRecord::Base
  Time.zone = 'Tokyo' #application_controller.rbに記述がベター
  validates_presence_of :time_shop_closed
  before_validation(on: :create) do
      #:time_shop_closedカラムの初期値に今日の18:00を与える
      self.time_shop_closed =Time.local(Date.today.year,Date.today.month,Date.today.day, 18, 0, 0)
  end
 #以下省略

before_createだとvalidationエラー(Time shop closed can't be blank)が出て困りました。before_validation(on: :create)が正解。ハマったので記録しました。

ローカル時間に変更

参考: Rails3系のtimezoneの扱いに関するメモ
railsの場合にデフォルトの設定だとタイムゾーンがUTCになっています。
application_controller.rbなどで以下を記述

Time.zone = 'Tokyo'

config/application.rbにて以下を追記

config.active_record.default_timezone = :local

ほぼ参考の丸写しです。

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0