2011-11-24 43 views
5

Tôi có một mô hình (và bảng) tồn tại với các cột sau: id, name, city. Trong bảng này là dữ liệu và tôi muốn bảng này thêm các cột created_atupdated_at - bất cứ ai có thể cho tôi một sự trợ giúp, làm thế nào để làm điều đó? Ý tôi là - nếu tôi tạo một mô hình, do đó, hai cột này được tạo tự động và thông tin thời gian được chèn luôn tự động, khi tôi lưu ở đó một cái gì đó.Đường ray - cách thêm dấu thời gian vào mô hình?

Bây giờ có thể thêm hai cột này với dữ liệu thời gian chèn tự động không?

+0

Vì vậy, bạn có một mô hình hiện có mà bạn muốn để thêm dấu thời gian vào? Bạn đang sử dụng phiên bản Rails nào? –

+0

Rails activerecord tự động tạo cột dấu thời gian, tại sao bạn muốn thêm các cột dấu thời gian của mình? – megas

+0

@ megas, anh ấy có thể đã xóa chúng khỏi di chuyển ban đầu của mình –

Trả lời

13

này sẽ cho phép bạn thêm các cột dấu thời gian để một mô hình đã tồn tại

rails generate migration add_timestamps_to_users 

này sẽ tạo một tập tin chuyển đổi cho bạn. Mở nó lên và thực hiện thay đổi cần thiết

class AddTimestampsToUsers < ActiveRecord::Migration 
    # in my example i'm using `users` table; change this to match your table name 
    def change_table :users do |t| 
    t.timestamps 
    end 
end 

Sau đó, di chuyển cơ sở dữ liệu của bạn

rake db:migrate 
+0

Câu trả lời hay, cũng tốt khi lưu ý rằng bạn muốn sửa đổi các lệnh để khớp với tên của mô hình mà bạn đang sửa đổi. –

+0

Giải pháp này không áp dụng cho bảng chứa dữ liệu, vì các cột mới được tạo nên có các giá trị mặc định và cú pháp "dấu thời gian" không cho phép chỉ định chúng. – Paul

+1

Paul, làm thế nào để bạn mong đợi để tạo nên các giá trị ngày/thời gian cho các bản ghi từ trước? Tôi nghĩ rằng các giá trị 'null' là đủ cho các bản ghi đã được tạo trước khi cột dấu thời gian tồn tại. –

12

Cần lưu ý rằng trong khi câu trả lời Macek là ngay tại cốt lõi, ông không sử dụng cú pháp chính xác cho cuộc di cư (quên phương thức "thay đổi").

Vì vậy, đây là câu trả lời của mình với cú pháp khắc phục:

này sẽ cho phép bạn thêm các cột dấu thời gian để một mô hình đã tồn tại

rake generate migration add_timestamps_to_users 

này sẽ tạo một tập tin chuyển đổi cho bạn. Mở nó lên và thực hiện thay đổi cần thiết

class AddTimestampsToModel < ActiveRecord::Migration 
    # in my example i'm using `users` table; change this to match your table name 
    def change 
    change_table :users do |t| 
     t.timestamps 
    end 
    end 
end 

Sau đó, di chuyển cơ sở dữ liệu của bạn

rake db:migrate 
4

add_timestamps là một phương pháp dành riêng cho mục đích này:

class AddTimestampsToUsers < ActiveRecord::Migration 
    def change 
    add_timestamps :users 
    end 
end 
Các vấn đề liên quan