2011-09-10 5 views
10
rails generate model User email:string password:string 

crea el siguiente script de migración¿Por qué las marcas de tiempo se crean al generar el modelo

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 

marcas de tiempo ¿Qué es y por qué está siendo creado, cuando yo no pido que se cree?

Respuesta

9

Rails agrega automáticamente dos columnas, created_at y updated_at a su tabla/migración/modelo ActiveRecord. Si no los quiere, puede eliminarlos.

Hacer cosas automáticamente para usted que "no lo haya preguntado" es lo que Rails es bueno: esto es "convención sobre la configuración (CoC)". Puedes (casi) especificar siempre que quieres algo más, pero en general, Rails hará las cosas como la mayoría de los usuarios lo quieran.

Las marcas de tiempo creadas y actualizadas generalmente son muy útiles.

+0

es t.marcas de tiempo un solo campo o se asigna a las columnas anteriores que ha mencionado – Jason

+2

@Jason: Eso produce tanto ['created_at' como' updated_at'] (http://guides.rubyonrails.org/migrations.html#creating-a- modelo). –

+0

@Jason produce dos columnas para usted, "automágicamente" como se dice ... –

2

marcas de tiempo es un método en el migraciones que creará dos columnas en la tabla correspondiente de su modelo

Ex: según su ejemplo

módulo es usuario tabla es usuarios

y en la tabla de usuarios que creará dos columnas de fecha y hora

  1. created_at
  2. updated_at

estas columnas se actualizarán automáticamente al crear un objeto o al editar un objeto (en este caso, el modelo de usuario). (cuando se realizan acciones a través del modelo ActiveRecord)

Esto es útil cuando se investigan registros creados/actualizaciones veces.

Cuando no tiene la desean tener estas columnas, sencillo quitar el método de 'marcas de tiempo' de su migración

HTH

sameera

22

Esta cuestión se planteó en una búsqueda de "generar modelo de carriles sin marcas de tiempo", por lo que quería añadir una respuesta sobre cómo hacerlo:

rails g model MyModel --no-timestamps 

Esto funciona en Rails 3.2 y versiones posteriores.

+2

rieles 4: funciona bien –

+0

rieles 5: funciona bien – Adobe

0

Estoy usando Rails 4.2.5 y ahora puede elegir si desea o no los campos de marca de hora.

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

     t.timestamps null: false 
    end 
    end 
end 

La migración antes mencionado se creará una tabla llamada create_products con dos campos de marcas de tiempo (created_at y updated_at). Si no desea esos campos, necesita eliminar la línea de marcas de tiempo.

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

Fuente: http://edgeguides.rubyonrails.org/active_record_migrations.html

Cuestiones relacionadas