LINUX.ORG.RU

миграции в RoR

 


0

2

Как сделать миграцию которая в базе данных MySQL создаст поле с типом timestamp.

Пробовал

class CreateTests < ActiveRecord::Migration
  def change
    create_table :tests do |t|
	t.column :test, 'timestamp'
    end
  end
end
RoR лепит тип datetime.

★★★★★

Последнее исправление: CYB3R (всего исправлений: 1)

Хм, помнится, раньше это срабатывало (в отличие от :timestamp). Сейчас нет возможности проверить.

А зачем тебе понадобился именно таймстэмп? Датавремя же гораздо лучше!

Apple-ch ★★
()
Ответ на: комментарий от Apple-ch

timestamp время хранит по гринвичу

TDrive ★★★★★
() автор топика
Ответ на: комментарий от special-k
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
...
| t           | datetime     | YES  |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+

special-k ★★★★
()

Судя по исходникам, так как в ОП-посте и не должно работать:

https://github.com/rails/rails/blob/master/activerecord/lib/active_record/con...

То есть :timestamp в native types — только для совместимости. Ничего общего с мускулоским TIMESTAMP не имеет. Можно вот так:

 class AddMysqlTimestampToTests < ActiveRecord::Migration
    def up
      execute "ALTER TABLE `tests` ADD COLUMN test TIMESTAMP NULL"
    end
 
    def down
      remove_column :tests, :test
    end
 end 

Но у этого есть недостатки — https://github.com/rails/rails/blob/master/activerecord/lib/active_record/con...

Хм, помнится, раньше это срабатывало (в отличие от :timestamp). Сейчас нет возможности проверить.

Это уже одно и то же — https://github.com/rails/rails/blob/master/activerecord/lib/active_record/con...

Anatolik ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.