Почему метки времени создаются при создании модели - PullRequest
14 голосов
/ 10 сентября 2011
rails generate model User email:string password:string

создает следующий скрипт миграции

class CreateUsers < ActiveRecord::Migration
  def self.up
    create_table :users do |t|
      t.string :email
      t.string :password
      t.timestamps
    end
  end
  def self.down
    drop_table :users
  end
end

Что такое временные метки и почему они создаются, когда я не просил их создавать?

Ответы [ 4 ]

24 голосов
/ 15 марта 2013

Этот вопрос возник при поиске «Создать модель рельсов без временных меток», поэтому я хотел добавить ответ о том, как это сделать:

rails g model MyModel --no-timestamps

Это работает в Rails 3.2 +.

12 голосов
/ 10 сентября 2011

Rails автоматически добавляет два столбца, created_at и updated_at в вашу таблицу / миграцию / модель ActiveRecord. Если они вам не нужны, вы можете удалить их.

Делая для вас вещи автоматически, чтобы вы «не спрашивали», это то, в чем Rails хорош: это «соглашение по конфигурации (CoC)». Вы можете (почти) всегда указывать, что хотите что-то еще, но в целом Rails будет делать то, что хочет большинство пользователей.

Созданные и обновленные временные метки обычно очень полезны.

2 голосов
/ 10 сентября 2011

Метки времени - это метод миграции, при котором в соответствующей таблице вашей модели создаются два столбца.

Пример: в соответствии с вашим примером

  • Модуль - это пользователь
  • таблица user

, а в таблице users будут созданы два столбца даты-времени:

  1. create_at
  2. updated_at

Эти столбцы будут автоматически обновляться при создании объекта или при редактировании объекта, в данном случае это модель пользователя (когда вы выполняете какие-либо действия с помощью модели ActiveRecord).

Это полезно при исследовании времени создания / обновления записей.

Если вы не хотите иметь эти столбцы, просто удалите метод timestamps из вашей миграции.

0 голосов
/ 14 февраля 2016

Я использую Rails 4.2.5, и теперь вы можете выбрать, хотите ли вы поля временных отметок или нет.

class CreateProducts < ActiveRecord::Migration
  def change
    create_table :products do |t|
      t.string :name
      t.text :description

      t.timestamps null: false
    end
  end
end

При вышеупомянутой миграции будет создана таблица с именем create_products с двумя полями отметок времени (созданный_ иupdated_at).Если вам не нужны эти поля, вам нужно удалить строку меток времени.

class CreateProducts < ActiveRecord::Migration
  def change
    create_table :products do |t|
      t.string :name
      t.text :description
    end
  end
end

Источник: http://edgeguides.rubyonrails.org/active_record_migrations.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...