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

tworzy następujące Skrypt migracyjnyDlaczego timestamps uzyskać utworzone podczas generowania modelu

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 

Co jest datowniki i dlaczego jest on stworzony zaczyna, kiedy nie poprosić go do wykorzystania?

Odpowiedz

9

Szyny automatycznie dodaje dwie kolumny, created_at i updated_at do swojego modelu tabeli/migracji/ActiveRecord. Jeśli ich nie chcesz, możesz je usunąć.

Robiąc dla ciebie rzeczy automatycznie "nie pytałeś", Rails jest dobry w: to jest "konwencja nad konfiguracją (CoC)". Możesz (prawie) zawsze określać, że chcesz coś innego, ale ogólnie rzecz biorąc, Railsy będą robić rzeczy tak, jak chce tego większość użytkowników.

Utworzone i zaktualizowane znaczniki czasu są na ogół bardzo przydatne.

+0

T.sygnatury czasowe pojedynczego pola lub mapuje do powyższych kolumn, o których wspomniałeś – Jason

+2

@Jason: To produkuje zarówno [created_at', jak i 'updated_at'] (http://guides.rubyonrails.org/migrations.html#creating-a- Model). –

+0

@Jason produkuje dla ciebie dwie kolumny "automagicznie" jak to jest powiedziane ... –

2

znaczniki czasu jest metoda migracji, które będą tworzyć dwie kolumny w odpowiedniej tabeli Twojego modelu

Ex: jak na swój przykład

moduł obsługi tabela użytkowników

w tabeli użytkowników to stworzy dwie czasowe kolumny date

  1. created_at
  2. updated_at

te kolumny zostaną automatycznie zaktualizowane po utworzeniu obiektu lub po edycji obiektu (w tym przypadku modelu użytkownika). (gdy wykonujesz jakiekolwiek czynności za pośrednictwem modelu ActiveRecord)

Jest to przydatne podczas badania zapisów utworzonych/zaktualizowanych razy.

Jeśli dawca chcą mieć te kolumny, proste usunięcie „znaczniki czasu” metodę z migracją

HTH

Sameera

22

To pytanie przyszedł w poszukiwaniu „generować szyn modelu bez znaczniki czasu ", więc chciałem dodać odpowiedź, jak to zrobić:

rails g model MyModel --no-timestamps 

Działa w Railsach 3.2+.

+2

szyny 4: działa dobrze –

+0

szyny 5: działa dobrze – Adobe

0

Używam Railsów 4.2.5 i teraz możesz wybrać, czy chcesz, czy nie, pola znaczników czasowych.

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

     t.timestamps null: false 
    end 
    end 
end 

Migracja wspomniano wyżej będzie utworzyć tabelę o nazwie create_products z dwoma znacznikami pól (created_at i updated_at). Jeśli nie chcesz tych pól, musisz usunąć linię znaczników czasowych.

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

Źródło: http://edgeguides.rubyonrails.org/active_record_migrations.html

Powiązane problemy