मेरे रेल्स (3.2) ऐप में, मेरे डेटाबेस में टेबलों का एक गुच्छा है, लेकिन मैं कुछ अड़चन नहीं जोड़ना भूल गया। मैं चारों ओर घूम चुका हूं, लेकिन मैं यह नहीं लिख सकता कि एक माइग्रेशन कैसे लिखा जाए जो किसी मौजूदा कॉलम में अशक्त न हो।
TIA।
मेरे रेल्स (3.2) ऐप में, मेरे डेटाबेस में टेबलों का एक गुच्छा है, लेकिन मैं कुछ अड़चन नहीं जोड़ना भूल गया। मैं चारों ओर घूम चुका हूं, लेकिन मैं यह नहीं लिख सकता कि एक माइग्रेशन कैसे लिखा जाए जो किसी मौजूदा कॉलम में अशक्त न हो।
TIA।
जवाबों:
रेल 4+ के लिए, nates का उत्तर ( change_column_null का उपयोग करके ) बेहतर है।
प्री-रेल 4, change_column को आज़माएं ।
IrreversibleMigration
जो वह नहीं हो सकता जो आप चाहते हैं।
आप change_column_null का भी उपयोग कर सकते हैं :
change_column_null :table_name, :column_name, false
1) FIRST: डिफ़ॉल्ट मान के साथ कॉलम जोड़ें
2) यह: डिफ़ॉल्ट मान निकालें
add_column :orders, :items, :integer, null: false, default: 0
change_column :orders, :items, :integer, default: nil
यदि आप इसे एक नई क्रिएट माइग्रेशन स्क्रिप्ट / स्कीमा पर उपयोग कर रहे हैं तो हम इसे कैसे परिभाषित कर सकते हैं
class CreateUsers < ActiveRecord::Migration[5.2]
def change
create_table :users do |t|
t.string :name, null: false # Notice here, NOT NULL definition
t.string :email, null: false
t.string :password, null: false
t.integer :created_by
t.integer :updated_by
t.datetime :created_at
t.datetime :updated_at, default: -> { 'CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP' }
end
end
end
:limit
बाधा), तो आपको उपयोग करते समय उन विशेषताओं को दोहरानाchange_column
होगा, या वे खो जाएंगे। इस कारण से, मैं का उपयोग करना पसंदchange_column_null