Почему временные метки создаются при создании модели
rails generate model User email:string password:string
создает следующую миграцию script
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
Что такое метки времени и почему она создается, когда я не просил ее создавать?
Ответы
Ответ 1
Rails автоматически добавляет два столбца, created_at
и updated_at
к вашей модели table/migration/ActiveRecord. Если вы не хотите их, вы можете удалить их.
Выполнение автоматически для вас того, что вы "не спрашивали об этом", - это то, на что хорошо работает Rails: это "соглашение по конфигурации (CoC)". Вы можете (почти) всегда указывать, что хотите что-то еще, но в целом Rails будет делать так, как этого хотят большинство пользователей.
Созданные и обновленные временные метки, как правило, очень полезны.
Ответ 2
Этот вопрос возник в поиске "генерации модели рельсов без временных меток", поэтому я хотел добавить ответ о том, как это сделать:
rails g model MyModel --no-timestamps
Это работает в Rails 3.2 +.
Ответ 3
timestamps - это метод миграции, который создаст два столбца в соответствующей таблице вашей модели
Ex: согласно вашему примеру
модуль - Пользователь
table - пользователи
а в таблице пользователей он создаст два столбца времени
эти столбцы будут автоматически обновляться при создании объекта или при редактировании объекта (в данном случае модели пользователя). (при выполнении любых действий с помощью модели ActiveRecord)
Это полезно при исследовании созданных/обновленных записей.
Если вы не хотите иметь эти столбцы, просто удалите метод timestamps из вашей миграции
НТН
Sameera
Ответ 4
Я использую Rails 4.2.5, и теперь вы можете выбрать, хотите ли вы или нет полей timestamps.
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 с двумя полями timestamps (created_at и 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