जवाबों:
पहले अपने टर्मिनल में:
rails g migration change_date_format_in_my_table
फिर अपनी माइग्रेशन फ़ाइल में:
रेल के लिए> = 3.2:
class ChangeDateFormatInMyTable < ActiveRecord::Migration
def up
change_column :my_table, :my_column, :datetime
end
def down
change_column :my_table, :my_column, :date
end
end
change
बजाय एकल विधि का उपयोग क्यों नहीं किया जाता है , तो यह इसलिए है क्योंकि यह विधि माइग्रेशन परिभाषा का समर्थन नहीं करती है । up
down
change
change_column
इसके अलावा, यदि आप रेल 3 या नए का उपयोग कर रहे हैं, तो आपको up
और down
विधियों का उपयोग करने की आवश्यकता नहीं है । आप बस उपयोग कर सकते हैं change
:
class ChangeFormatInMyTable < ActiveRecord::Migration
def change
change_column :my_table, :my_column, :my_new_type
end
end
This migration uses change_column, which is not automatically reversible.
To make the migration reversible you can either:
1. Define #up and #down methods in place of the #change method.
2. Use the #reversible method to define reversible behavior.
रेल 3.2 और रेल 4 में, बेंजामिन के लोकप्रिय जवाब में थोड़ा अलग वाक्यविन्यास है।
पहले अपने टर्मिनल में:
$ rails g migration change_date_format_in_my_table
फिर अपनी माइग्रेशन फ़ाइल में:
class ChangeDateFormatInMyTable < ActiveRecord::Migration
def up
change_column :my_table, :my_column, :datetime
end
def down
change_column :my_table, :my_column, :date
end
end
वहाँ एक है change_column विधि, बस एक नए प्रकार के रूप में अपने प्रवास में निष्पादित datetime साथ।
change_column(:my_table, :my_column, :my_new_type)
AFAIK, माइग्रेशन वहाँ हैं जब आप स्कीमा परिवर्तन करते हैं (यानी उत्पादन) की देखभाल करने वाले डेटा को फिर से देखने का प्रयास करते हैं। इसलिए जब तक यह गलत न हो, और जब से उन्होंने कहा कि उन्हें डेटा की परवाह नहीं है, तो क्यों न केवल मूल माइग्रेशन में डेट टाइप से डेटाइम को संशोधित किया जाए और माइग्रेशन को फिर से चलाया जाए? (आशा है कि आपको परीक्षण मिल गए हैं :))।
rake db:migrate:reset
है।