মাইগ্রেশন ফাইল তৈরি করার সময় ডিফল্ট মান নির্ধারণ করা


104
rails generate migration AddRetweetsCountToTweet retweets_count:integer 

ওকে আমি মাইগ্রেশন ফাইল তৈরি করতে উপরের লাইনটি ব্যবহার করি যা ডেটাটাইপ পূর্ণসংখ্যার সাথে একটি মডেল টুইটটিতে একটি কলাম যুক্ত করতে উত্পন্ন ফাইলটিতে স্বয়ংক্রিয়ভাবে কোড উত্পন্ন করে। মাইগ্রেশন ফাইল তৈরি করার সময় আমি যুক্ত কলামে ডিফল্ট মান যুক্ত করতে চাই। এটা কি সম্ভব? আমি এটি googled কিন্তু খুঁজে পেলেন না। ছেলেদের সাহায্য দরকার।


বিষয়টিতে রেলগুইডটি দেখুন: গাইডস.আরবায়নরইলস.অর্গ / ইমিগ্রেশনস html আপনি যে তথ্যটি সন্ধান করছেন তা হ'ল মাইগ্রেশনের অ্যানাটমির প্রথম বিভাগে রয়েছে
অস্টিন লিন

1
তুমি কি বুঝাচ্ছ, তা আমি ভালই জানি. আমি পাশাপাশি একটি ডিফল্ট মান সেট করার চেষ্টা করে চলেছি, এবং এটি তথ্য অনুসন্ধান করার চেষ্টা করে এক রকম ব্যথা হয়েছিল। খালি এসকিউএল উত্পন্ন করা সহজ ছিল, যদিও তখন সংস্করণ নিয়ন্ত্রণে কোনও স্থানান্তর নেই।
তাস

উত্তর:


166

ডিফল্ট স্থানান্তর জেনারেটর ডিফল্ট মানগুলি পরিচালনা করে না ( কলাম পরিবর্তনকারীগুলি সমর্থিত তবে এতে অন্তর্ভুক্ত নয় defaultবা null) তবে আপনি নিজের জেনারেটর তৈরি করতে পারেন could

rake db:migrateঅপশনগুলি যুক্ত করে চলার আগে আপনি মাইগ্রেশন ফাইলটি ম্যানুয়ালি আপডেট করতে পারেন add_column:

add_column :tweet, :retweets_count, :integer, :null => false, :default => 0

... এবং রিল এপিআই পড়ুন


9
ঠিক আছে, উত্তর দেওয়ার জন্য ধন্যবাদ. আমি ভেবেছিলাম যে ডিফল্ট মাইগ্রেশন জেনারেটর যদি ডিফল্ট মানগুলি হ্যান্ডেল করার বিকল্প সরবরাহ করে তবে ডিফল্ট মান নির্দিষ্ট করার জন্য আমাকে উত্পন্ন করার পরে মাইগ্রেশন ফাইলটি সম্পাদনা করতে হবে না great
কেএক্সটাইজ


9

হ্যাঁ, মাইগ্রেশন জেনারেটর কমান্ডে কীভাবে 'ডিফল্ট' ব্যবহার করব তা আমি দেখতে পেলাম না তবে "রেক ডিবি: মাইগ্রেট" প্রয়োগের আগে উত্পন্ন মাইগ্রেশন ফাইলটি সংশোধন করে নিম্নলিখিত স্ট্রিং কলামের জন্য একটি ডিফল্ট মান নির্দিষ্ট করতে সক্ষম হয়েছিল:

class AddColumnToWidgets < ActiveRecord::Migration
  def change
    add_column :widgets, :colour, :string, default: 'red'
  end
end

এটি আমার 'উইজেট' মডেলটিতে 'রঙ' নামে একটি নতুন কলাম যুক্ত করে এবং নতুন উইজেটের ডিফল্ট 'রঙ'টিকে' লাল 'রূপে সেট করে।


(এটি কারাগারে ছিল 4.2।)
এমএসসি

4

আমি পুরো টেবিল তৈরির জন্য মাইগ্রেশন ফাইলে t.boolean: সক্রিয়,: ডিফল্ট => 1 চেষ্টা করেছি। যে স্থানান্তরটি দৌড়ানোর পরে যখন আমি ডিবিতে পরীক্ষা করেছিলাম তখন এটি নাল হিসাবে তৈরি। যদিও আমি ডিফল্টকে "1" হিসাবে বলেছি। এর পরে কিছুটা আমি মাইগ্রেশন ফাইলটি এর পরে পরিবর্তন করেছিলাম তবে এটি তৈরির টেবিল স্থানান্তর ফাইলের ক্ষেত্রে ডিফল্ট মান নির্ধারণের জন্য আমার পক্ষে কাজ করেছিল।

t.boolean: সক্রিয়,: নাল => মিথ্যা,: ডিফল্ট => 1। আমার জন্য কাজ করেছেন।

আমার রেল ফ্রেমওয়ার্ক সংস্করণটি 4.0.0



2

আপনাকে প্রথমে মডেল বেসিকগুলির জন্য নিজের স্থানান্তর তৈরি করতে হবে তারপরে আপনি পরিবর্তন_কলামটি ব্যবহার করে আপনার পূর্ববর্তী পরিবর্তন করতে অন্য স্থানান্তর তৈরি করবেন ...

def change
    change_column :widgets, :colour, :string, default: 'red'
end
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.