উত্তর:
remove_column :table_name, :column_name
এই ক্ষেত্রে:
remove_column :users, :hobby
ব্যবহারকারীর টেবিল থেকে শখ কলামটি সরিয়ে ফেলবে।
remove_column :table_name, :column_name, :type, :options
মধ্যে change
, পদ্ধতি থেকে যদি আপনাকে তা নির্দিষ্ট টাইপ মাইগ্রেশন প্রত্যাবর্তন সম্ভব। ডকুমেন্টেশন থেকে: দ্য type
এবং options
পরামিতি যদি থাকে উপেক্ষা করা হবে। মাইগ্রেশনের change
পদ্ধতিতে এগুলি সরবরাহ করা সহায়ক হতে পারে যাতে এটি আবার ফিরে যেতে পারে। সেক্ষেত্রে , type
এবং options
add_column দ্বারা ব্যবহৃত হবে।
change
পদ্ধতিতে একটি কলাম সরাতে পারবেন , তবে আপনি যদি কলামের ধরণ নির্দিষ্ট করে থাকেন। যেমন remove_column, :table_name, :column_name, :column_type
। অন্যথায় মাইগ্রেশন চালানোর চেষ্টা করার সময় আপনি নিম্নলিখিত ত্রুটিটি পেয়ে যাবেন:remove_column is only reversible if given a type
রেলগুলির পুরানো সংস্করণগুলির জন্য
ruby script/generate migration RemoveFieldNameFromTableName field_name:datatype
3 এবং তার বেশি রেলের জন্য
rails generate migration RemoveFieldNameFromTableName field_name:datatype
rails g migration remove_field_name_from_table_name field_name:datatype
এছাড়াও কাজ করে
AddXXXtoTTT
কোনও RemoveXXXFromTTT
ফাইলড নেম: ডেটা টাইপ, এবং উপযুক্ত অ্যাড_ক্যালোম এবং রিমুভ_ক্লোনম স্টেটমেন্ট তৈরি হবে: rails g migration RemoveUnusefulFieldsFromUsers hair_color:string favorite_number:integer
একটি একক স্থানান্তর ব্যবহার করে দুটি বৈশিষ্ট্য সরিয়ে ফেলবে an এটিও নোট করুন যে পদ্ধতি remove_column
দ্বারা সমর্থিত নয় change
, সুতরাং আপনাকে up
এবং উভয়ই লিখতে হবে down
।
change
। রোলব্যাকটি যেমনটি করা উচিত তেমন কাজ করে।
change
পদ্ধতি ব্যবহার করেন যা ফেরত যেতে পারে * আপনাকে ডেটা টাইপ (এবং অন্যান্য সমস্ত ক্ষেত্র সংশোধক) অবহিত করতে হবে, সুতরাং আপনি যদি এই স্থানান্তরকে রোলব্যাক করেন তবে ক্ষেত্রটি সঠিকভাবে পুনরায় তৈরি করা যেতে পারে। * যখন আমি উল্টে বলি, এটি ডাটাবেস কাঠামোর দিক থেকে, অবশ্যই, সেই কলামের ডেটা অবশ্যই হারিয়ে যাবে।
রেল 4 আপডেট করা হয়েছে, সুতরাং পরিবর্তনটি কলামটি ড্রপ করার জন্য মাইগ্রেশনে ব্যবহার করা যেতে পারে এবং মাইগ্রেশন সফলভাবে রোলব্যাক করবে। 3 টি প্রয়োগের জন্য দয়া করে নিম্নলিখিত সতর্কতাটি পড়ুন:
রেল 3 সতর্কতা
আপনি যখন এই আদেশটি ব্যবহার করেন দয়া করে নোট করুন:
rails generate migration RemoveFieldNameFromTableName field_name:datatype
উত্পন্ন মাইগ্রেশনটি এরকম কিছু দেখবে:
def up
remove_column :table_name, :field_name
end
def down
add_column :table_name, :field_name, :datatype
end
একটি ডাটাবেস টেবিল থেকে কলামগুলি সরানোর সময় পরিবর্তন পদ্ধতিটি ব্যবহার না করার বিষয়ে নিশ্চিত হন (রেল 3 অ্যাপসে মাইগ্রেশন ফাইলে আপনি কী চান না তার উদাহরণ):
def change
remove_column :table_name, :field_name
end
রিয়েল 3-এ পরিবর্তনের পদ্ধতিটি মুছে ফেলা_ কলামটি করার সময় স্মার্ট নয়, সুতরাং আপনি এই স্থানান্তরটি রোলব্যাক করতে পারবেন না।
change
পদ্ধতিটি ব্যবহার করেন তবে rake db:rollback
কমান্ডটি ত্রুটিযুক্ত হবে। rake db:rollback
মূলত এর বিপরীত rake db:migrate
। এই বাগটি 4 টি :) :)
একটি রেল 4 অ্যাপে কলামগুলি অপসারণের জন্যও পরিবর্তন পদ্ধতিটি ব্যবহার করা সম্ভব। তৃতীয় প্যারামটি হ'ল ডেটা টাইপ এবং alচ্ছিকভাবে আপনি বিকল্প দিতে পারেন। এটি ডকুমেন্টেশনের 'উপলভ্য রূপান্তরগুলি' বিভাগে কিছুটা লুকিয়ে রয়েছে ।
class RemoveFieldFromTableName < ActiveRecord::Migration
def change
remove_column :table_name, :field_name, :data_type, {}
end
end
এটি করার দুটি ভাল উপায় রয়েছে:
আপনি সহজেই সরানো_ কলামটি ব্যবহার করতে পারেন:
remove_column :users, :first_name
আপনার স্কিমায় যদি কেবলমাত্র একক পরিবর্তন করতে হয় তবে এটি ঠিক আছে।
আপনি চেঞ্জ টেবিল ব্লক ব্যবহার করে এটিও করতে পারেন, এর মতো:
change_table :users do |t|
t.remove :first_name
end
আমি এটি আরও সুস্পষ্ট বলে মনে করি এবং আপনি একবারে বেশ কয়েকটি পরিবর্তন করতে পারেন।
সমর্থিত পরিবর্তন_সামগ্রী পদ্ধতিগুলির সম্পূর্ণ তালিকা এখানে রয়েছে:
http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/change_table
রেল 5 এ আপনি টার্মিনালে এই কমান্ডটি ব্যবহার করতে পারেন:
rails generate migration remove_COLUMNNAME_from_TABLENAME COLUMNNAME:DATATYPE
উদাহরণস্বরূপ সারণী ব্যবহারকারীদের থেকে কলাম অ্যাক্সেস-লেভেল (স্ট্রিং) অপসারণ:
rails generate migration remove_access_level_from_users access_level:string
এবং তারপরে চালান:
rake db:migrate
একটি কলাম সরাতে মাইগ্রেশন তৈরি করুন যেমন এটি স্থানান্তরিত হলে ( rake db:migrate
), এটি কলামটি বাদ দেয় । এবং এই মাইগ্রেশনটি রোলব্যাকড ( ) করা থাকলে এটি কলামে ফিরে যুক্ত হওয়া উচিত rake db:rollback
।
বাক্য গঠন:
সরান_কলাম: টেবিলের নাম,: কলাম_নাম,: প্রকার
কলাম সরায়, মাইগ্রেশন রোলব্যাক করা থাকলে ফিরে কলামও যুক্ত করে ।
উদাহরণ:
remove_column :users, :last_name, :string
দ্রষ্টব্য : আপনি যদি ডেটা টাইপ এড়িয়ে যান তবে মাইগ্রেশন সফলভাবে কলামটি সরিয়ে ফেলবে তবে আপনি যদি মাইগ্রেশনটি রোলব্যাক করেন তবে এটি একটি ত্রুটি ছুঁড়ে দেবে।
আপনার টার্মিনালে নিম্নলিখিত কমান্ডটি চালান :
rails generate migration remove_fieldname_from_tablename fieldname:fieldtype
দ্রষ্টব্য: রেল সম্মেলন অনুযায়ী সারণির নাম বহুবচন আকারে হওয়া উচিত।
উদাহরণ:
আমার ক্ষেত্রে আমি টেবিল accepted
থেকে কলামটি (একটি বুলিয়ান মান) সরাতে চাই quotes
:
rails g migration RemoveAcceptedFromQuotes accepted:boolean
ডকুমেন্টেশন পুনরায় দেখুন: একটি সারণীতে ক্ষেত্রগুলি যুক্ত / সরানোর সময় একটি সম্মেলন:
মাইগ্রেশন তৈরির জন্য একটি বিশেষ সিনট্যাক্টিক শর্টকাট রয়েছে যা কোনও টেবিলে ক্ষেত্র যুক্ত করে।
রেলগুলি মাইগ্রেশন যুক্ত করে_ফিল্ডনাম_ টু-টেবিল নাম ক্ষেত্রের নাম: ফিল্ডটাইপ
# db/migrate/20190122035000_remove_accepted_from_quotes.rb
class RemoveAcceptedFromQuotes < ActiveRecord::Migration[5.2]
# with rails 5.2 you don't need to add a separate "up" and "down" method.
def change
remove_column :quotes, :accepted, :boolean
end
end
rake db:migrate
.... এবং তারপরে আপনি দৌড়ে যাচ্ছেন!
rails db:migrate
RAILS 5 অ্যাপের জন্য কলামগুলি সরান
rails g migration Remove<Anything>From<TableName> [columnName:type]
উপরের কমান্ডটি db/migrate
ডিরেক্টরিতে একটি মাইগ্রেশন ফাইল তৈরি করে । স্নিপেট ঘা রেল জেনারেটর দ্বারা উত্পাদিত টেবিলের উদাহরণ থেকে কলাম সরানোর একটি,
class RemoveAgeFromUsers < ActiveRecord::Migration
def up
remove_column :users, :age
end
def down
add_column :users, :age, :integer
end
end
আমিও রেলের জন্য একটি দ্রুত রেফারেন্স গাইড তৈরি করেছি যা এখানে পাওয়া যাবে ।
আপনি নিম্নলিখিত চেষ্টা করতে পারেন:
remove_column :table_name, :column_name
rails g migration RemoveXColumnFromY column_name:data_type
এক্স = কলামের নাম
Y = টেবিলের নাম
সম্পাদনা
মন্তব্য অনুসারে পরিবর্তিত RemoveXColumnToY
হয়েছে RemoveXColumnFromY
- মাইগ্রেশন আসলে কী করছে তার জন্য আরও স্পষ্টতা সরবরাহ করে।
remove_column
মধ্যে change
পদ্ধতি টেবিল থেকে কলাম মুছে ফেলতে সাহায্য করবে।
class RemoveColumn < ActiveRecord::Migration
def change
remove_column :table_name, :column_name, :data_type
end
end
সম্পূর্ণ রেফারেন্সের জন্য এই লিঙ্কটিতে যান: http://guides.rubyonrails.org/active_record_migrations.html
কেবল সহজ 3 ধাপে টেবিল থেকে কলামটি সরিয়ে ফেলার জন্য:
rails g migration remove_column_from_table_name
টার্মিনালে এই কমান্ডটি চালনার পরে এই নাম এবং টাইম স্ট্যাম্পের দ্বারা তৈরি করা একটি ফাইল (__table_name from_column)।
তারপরে এই ফাইলটিতে যান।
ফাইলের ভিতরে আপনাকে লিখতে হবে
remove_column :table_name, :column_name
শেষ পর্যন্ত কনসোলে যান এবং তারপর করুন
rake db:migrate
রেলস কনসোল থেকে আরও একজন এখানে
ActiveRecord::Migration.remove_column(:table_name, :column_name)
এরকম কর;
rails g migration RemoveColumnNameFromTables column_name:type
অর্থাত rails g migration RemoveTitleFromPosts title:string
যাইহোক, ডাউনটাইম সম্পর্কেও বিবেচনা করা ভাল কারণ অ্যাক্টিভেকর্ডটি রানটাইমের সময় ডাটাবেস কলামগুলিকে ক্যাশে করে তাই যদি আপনি কোনও কলামটি বাদ দেন তবে এটি আপনার অ্যাপ্লিকেশনটি পুনরায় চালু না হওয়া পর্যন্ত ব্যতিক্রম হতে পারে।
তথ্যসূত্র: শক্তিশালী মাইগ্রেশন
সহজভাবে, আপনি কলামটি মুছে ফেলতে পারেন
remove_column :table_name, :column_name
উদাহরণ স্বরূপ,
remove_column :posts, :comment
up
এবংdown
পদ্ধতিগুলি নিশ্চিত করার বিষয়টি নিশ্চিত করুনchange
, @ পাওয়ারগুলির উত্তরে বর্ণিত নয়।