2012-06-05 23 views
50

Ban đầu tôi đã tạo ra một bảng với cột nhưRails Migration để thực hiện một cột null => true

t.string "email", :default => "", :null => false 

Yêu cầu đã thay đổi và bây giờ tôi cần phải cho phép email để được null. Làm thế nào tôi có thể viết một di chuyển để thực hiện: null => true

+1

bản sao có thể có của [Làm cách nào để thay đổi cột có thể có giá trị thành không thể vô hiệu hóa trong quá trình di chuyển Rails?] (Http://stackoverflow.com/questions/5966840/how-to-change-a-nullable-column-to-not -nullable-in-a-rails-migration) – laffuste

Trả lời

69

Hãy thử:

change_column :table_name, :email, :string, :null => true 
+0

Cảm ơn bạn ... đã làm việc! – Pykih

+0

Hãy xem xét sử dụng 'change_column_null' vì' change_column' này có thể không hoạt động trong phiên bản nhất định –

50

tôi không thể có được giải pháp trên để làm việc với Active Record 4.0.8 và PostgreSQL 9,3

Tuy nhiên change_column_null làm việc hoàn hảo.

change_column_null :users, :email, true 

Đảo ngược có tùy chọn tốt để cập nhật bản ghi hiện có (nhưng không đặt mặc định) khi không cho phép.

+5

Tôi khuyên bạn nên sử dụng 'change_column_default' cùng với điều này nếu bạn muốn' null' là giá trị cột mặc định. Nếu không, nó sẽ là 'false' hoặc' 0'. –

Các vấn đề liên quan