আমি কীভাবে একটি রুবে রেলের মাইগ্রেশনে একটি ডাটাবেস কলামটির নাম পরিবর্তন করতে পারি?


1451

আমি এর hased_passwordপরিবর্তে ভুলভাবে একটি কলামের নাম রেখেছি hashed_password

এই কলামটির নাম পরিবর্তন করতে মাইগ্রেশন ব্যবহার করে আমি কীভাবে ডাটাবেস স্কিমা আপডেট করব?

উত্তর:


2308
rename_column :table, :old_column, :new_column

এটি করার জন্য আপনি সম্ভবত একটি পৃথক স্থানান্তর তৈরি করতে চাইবেন। ( FixColumnNameআপনি যেমন করবেন তেমন নাম পরিবর্তন করুন )):

script/generate migration FixColumnName
# creates  db/migrate/xxxxxxxxxx_fix_column_name.rb

তারপরে আপনার ইচ্ছা করতে মাইগ্রেশনটি সম্পাদনা করুন:

# db/migrate/xxxxxxxxxx_fix_column_name.rb
class FixColumnName < ActiveRecord::Migration
  def self.up
    rename_column :table_name, :old_column, :new_column
  end

  def self.down
    # rename back if you need or do something else or do nothing
  end
end

রেলগুলির জন্য ৩.১ ব্যবহার করুন:

যদিও upএবং downপদ্ধতি এখনও আবেদন করতে, পাগল 3.1 একটি পায় changeপদ্ধতি "জানেন আপনার ডাটাবেস মাইগ্রেট এবং এটি বিপরীত যখন মাইগ্রেশন একটি পৃথক নিচে পদ্ধতি লিখতে প্রয়োজন ছাড়াই ফিরে ঘূর্ণিত হয় কিভাবে" যে।

আরও তথ্যের জন্য " সক্রিয় রেকর্ড মাইগ্রেশন " দেখুন।

rails g migration FixColumnName

class FixColumnName < ActiveRecord::Migration
  def change
    rename_column :table_name, :old_column, :new_column
  end
end

আপনার যদি পুনরায় নামকরণের জন্য পুরো গুচ্ছ কলাম থাকে বা এমন কিছু জিনিস যা টেবিলের নামটি বারবার পুনরাবৃত্তি করতে পারে:

rename_column :table_name, :old_column1, :new_column1
rename_column :table_name, :old_column2, :new_column2
...

আপনি change_tableজিনিসগুলিকে কিছুটা পরিষ্কার রাখতে ব্যবহার করতে পারেন :

class FixColumnNames < ActiveRecord::Migration
  def change
    change_table :table_name do |t|
      t.rename :old_column1, :new_column1
      t.rename :old_column2, :new_column2
      ...
    end
  end
end

তারপরে ঠিক db:migrateযথারীতি বা আপনি নিজের ব্যবসা সম্পর্কে যান।


4 রেলের জন্য:

Migrationকলামটির নাম পরিবর্তনের জন্য একটি তৈরি করার সময় , রেলস 4 এর changeপরিবর্তে upএবং downউপরের অংশে উল্লিখিত হিসাবে একটি পদ্ধতি উত্পন্ন করে । উত্পন্ন changeপদ্ধতিটি হ'ল:

$ > rails g migration ChangeColumnName

যা মাইগ্রেশন ফাইলের মতো তৈরি করবে:

class ChangeColumnName < ActiveRecord::Migration
  def change
    rename_column :table_name, :old_column, :new_column
  end
end

24
স্ব.ডাউন ডাউনটি সর্বদা সেলফ-আপের বিপরীত হওয়া উচিত , সুতরাং "আপনার যদি প্রয়োজন হয় বা অন্য কিছু করা বা কিছু না করা" আসলেই প্রস্তাবিত নয়। কেবলমাত্র: পুনর্নবীকরণ_কলাম: টেবিলের নাম,: নতুন_কলাম,: ওল্ড_কলাম
লূক গ্রিফিথস

3
আপনি যা করেছেন তা ফিরিয়ে দেওয়া স্বাভাবিক অনুশীলনের সময় self.upআমি বলব না self.down" সর্বদা বিপরীত হওয়া উচিত "। আপনার স্থানান্তরের প্রসঙ্গে নির্ভর করে। কেবল "বিপরীত" স্থাপন করা স্থানান্তর "ডান" হতে পারে না।
এখন

23
পাগল 3.1 আপনি প্রতিস্থাপন করতে পারেন def self.upএবং def self.downসঙ্গে def changeএবং এটি জানতে পারবেন কিভাবে রোলব্যাক করতে।
টুরাদগ

2
তুরাদগ - * এটি বেশিরভাগ সময় রোলব্যাক করবেন কীভাবে তা জানতে পারবেন। আমি changeপদ্ধতিটি পুরো প্রমাণ হিসাবে খুঁজে পাই না, সুতরাং জটিল অভিবাসনগুলির জন্য ব্যবহার upএবং downপদ্ধতিগুলি ঝোঁক ।
জেলিফিশবয়

6
নামকরণ কি সূচি সরিয়ে দেয়?
সুং চ

68

আমার মতে, এই ক্ষেত্রে, এটি ব্যবহার করা ভাল rake db:rollback, তারপরে আপনার স্থানান্তর সম্পাদনা করুন এবং আবার চালান rake db:migrate

তবে কলামে যদি আপনার কাছে ডেটা থাকে তবে আপনি হারাতে চান না, তবে ব্যবহার করুন rename_column


34
এমনকি "একটি দলের মধ্যে", যদি আপনার অ্যাপ্লিকেশনটির একাধিক ঘটনা চলমান থাকে, বিভিন্ন পরিবেশে বা একাধিক কম্পিউটার ইত্যাদিতে বলুন, সম্পাদিত মাইগ্রেশন পরিচালনা করা বড় ব্যথা। আমি কেবলমাত্র একটি মাইগ্রেশন সম্পাদনা করি যদি আমি কেবল এটি তৈরি করেছিলাম এবং বুঝতে পারি যে এটি ভুল ছিল, এবং এখনও অন্য কোথাও এটি আক্ষরিকভাবে চালাচ্ছি না।
ইত্তানথোরজোশ

1
এর পরে আমাকে সার্ভারটি পুনরায় চালু করতে হবে।
মুহাম্মদ হেউডি

7
এই কৌশলটি কেবলমাত্র এমন পরিস্থিতিতে ব্যবহার করা উচিত যেখানে আপনার পরিবর্তনগুলি এখনও আপনার উত্পাদন শাখায় একত্রিত হয়নি এবং অন্যরা ডেটা অধ্যবসায় নির্ভর করে না। বেশিরভাগ প্রতিটি উত্পাদন পরিস্থিতিতে, এটি পছন্দসই পদ্ধতি নয়।
কলিন কবরগুলি

4
কখনও এই জাতীয় জিনিস না।
new2cpp

4
আমি আমার দলকে বলতে চাই: 'অভিবাসনগুলি নিখরচায়' বন্যের মধ্যে ছেড়ে দেওয়া মাইগ্রেশন সম্পাদনের জন্য ব্যয় বেশি: আমি একবার অন্য দলের সদস্যকে উপলব্ধি করার আগে আমার কোডটি কেন কাজ করছে না তা ব্যয় করতে কয়েক ঘন্টা ব্যয় করেছি team ফিরে গিয়ে মাইগ্রেশন সম্পাদনা করেছিলাম যা আমি ইতিমধ্যে চালিয়েছি। সুতরাং বিদ্যমান মাইগ্রেশনটি সম্পাদনা করবেন না, স্কিমা পরিবর্তন করতে একটি নতুন ব্যবহার করুন, কারণ ... '' অভিবাসনগুলি নিখরচায়! ' (এটি কঠোরভাবে সত্য নয়, তবে এটি বিষয়টি
বোঝায়

31

কলামটি যদি ইতিমধ্যে ডেটা দিয়ে সজ্জিত হয়ে থাকে এবং উত্পাদনে বেঁচে থাকে তবে আমি মাইগ্রেশনের জন্য অপেক্ষা করার সময় উত্পাদনের ডাউনটাইম এড়াতে যাতে ধাপে ধাপে পদ্ধতির প্রস্তাব দিই।

প্রথমে আমি নতুন নাম (গুলি) সহ কলাম যুক্ত করতে একটি পুরানো কলামের নাম থেকে মানগুলি তৈরি করতে একটি ডিবি মাইগ্রেশন তৈরি করব।

class AddCorrectColumnNames < ActiveRecord::Migration
  def up
    add_column :table, :correct_name_column_one, :string
    add_column :table, :correct_name_column_two, :string

    puts 'Updating correctly named columns'
    execute "UPDATE table_name SET correct_name_column_one = old_name_column_one, correct_name_column_two = old_name_column_two"
    end
  end

  def down
    remove_column :table, :correct_name_column_one
    remove_column :table, :correct_name_column_two
  end
end

তারপরে আমি ঠিক সেই পরিবর্তনটিই করতাম এবং পরিবর্তনটিকে উত্পাদনের দিকে ঠেলে দেব।

git commit -m 'adding columns with correct name'

তারপরে কমিটিকে একবার প্রোডাকশনে ঠেলে দেওয়ার পরে আমি চালিয়ে যাব।

Production $ bundle exec rake db:migrate

তারপরে আমি পুরানো কলামের নামটি নতুন কলামের নামের সাথে উল্লেখ করে এমন সমস্ত দর্শন / নিয়ন্ত্রককে আপডেট করব। আমার পরীক্ষার স্যুটটি চালান, এবং কেবল সেই পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ। (এটি স্থানীয়ভাবে কাজ করছে এবং প্রথমে সমস্ত পরীক্ষায় উত্তীর্ণ হয়েছে তা নিশ্চিত করার পরে!)

git commit -m 'using correct column name instead of old stinky bad column name'

তারপরে আমি সেই প্রতিশ্রুতিটি প্রযোজনায় ঠেলে দেব।

এই মুহুর্তে আপনি মাইগ্রেশনের সাথে সম্পর্কিত কোনও ধরণের ডাউনটাইম সম্পর্কে উদ্বিগ্ন না হয়ে মূল কলামটি সরিয়ে ফেলতে পারেন।

class RemoveBadColumnNames < ActiveRecord::Migration
  def up
    remove_column :table, :old_name_column_one
    remove_column :table, :old_name_column_two
  end

  def down
    add_column :table, :old_name_column_one, :string
    add_column :table, :old_name_column_two, :string
  end
end

তারপরে এই সর্বশেষতম স্থানান্তরকে উত্পাদনে চাপুন bundle exec rake db:migrateএবং পটভূমিতে চালান ।

আমি বুঝতে পারি এটি একটি প্রক্রিয়াটির সাথে আরও কিছুটা জড়িত, তবে আমার প্রোডাকশন মাইগ্রেশন নিয়ে সমস্যা হওয়ার চেয়ে আমি এটি করতে চাই।


2
আমি এর পেছনের চিন্তাভাবনাটি পছন্দ করি এবং আমি আপনার জবাবদিহি +1 করবো তবে ডেটা আপডেটটি কার্যকর করতে খুব বেশি সময় লাগবে যেহেতু এটি রেলপথের মধ্য দিয়ে যাচ্ছে এবং একবারে এক সারি করে। স্থানান্তর সঠিকভাবে নামযুক্ত কলামগুলি আপডেট করার জন্য কাঁচা এসকিএল স্টেটমেন্টের সাথে আরও দ্রুত কার্যকর করা হবে। উদাহরণস্বরূপ, প্রথম db মাইগ্রেশন স্ক্রিপ্টে, সদৃশ কলামের নামগুলি যুক্ত করার পরে, execute "Update table_name set correct_name_column_one = old_name_column_one"
গুই ওয়েইনম্যান

1
@ mr.ruh.roh ^ সম্পূর্ণরূপে একমত, এটি প্রথম স্থানে লেখা উচিত ছিল। আমি একটি একক দক্ষ স্কয়ার স্টেটমেন্ট প্রতিফলিত করতে সম্পাদনা করেছি। স্যানিটি পরীক্ষা করার জন্য ধন্যবাদ।
পল পেটেনগিল

2
নতুন টেবিলটিতে সরানো এবং নতুন টেবিলটি ব্যবহার করার জন্য কোড আপডেট করার মধ্যে কী রয়েছে? আপনি কীভাবে সম্ভাব্যভাবে অভিবাসনযুক্ত ডেটা রেখে যেতে পারবেন না?
স্টিফান ডরঙ্গা

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

26

http://api.rubyonrails.org/classes/ActiveRecord/Migration.html

অধীনে Available Transformations

rename_column(table_name, column_name, new_column_name):

একটি কলামের নাম পরিবর্তন করে তবে প্রকার এবং সামগ্রী রাখে।



18

মাইগ্রেশন ফাইল তৈরি করতে নীচের কমান্ডটি চালান:

rails g migration ChangeHasedPasswordToHashedPassword

তারপরে db/migrateফোল্ডারে উত্পন্ন ফাইলটিতে rename_columnনীচে লিখুন :

class ChangeOldCoulmnToNewColumn < ActiveRecord::Migration
  def change
     rename_column :table_name, :hased_password, :hashed_password
  end
end

14

এপিআই থেকে:

rename_column(table_name, column_name, new_column_name)

এটি একটি কলামটির নাম পরিবর্তন করে তবে ধরণ এবং সামগ্রী একই রাখে keeps


12

রবি অন রেল এর কিছু সংস্করণ মাইগ্রেশনে আপ / ডাউন পদ্ধতিতে সহায়তা করে এবং আপনার মাইগ্রেশনে যদি আপনার উপরে / ডাউন পদ্ধতি থাকে তবে:

def up
    rename_column :table_name, :column_old_name, :column_new_name
end

def down
    rename_column :table_name, :column_new_name, :column_old_name
end

আপনি যদি changeআপনার মাইগ্রেশন পদ্ধতি, তারপর:

def change
    rename_column :table_name, :column_old_name, :column_new_name
end

আরও তথ্যের জন্য আপনি স্থানান্তর করতে পারেন: রেল অন রুবেল - মাইগ্রেশন বা অ্যাক্টিভ রেকর্ড মাইগ্রেশনস


11

যদি আপনার কোডটি অন্য একটির সাথে ভাগ না করা হয় তবে সর্বোত্তম বিকল্পটি হ'ল rake db:rollback মাইগ্রেশনে আপনার কলামের নামটি সম্পাদনা করা উচিত এবং rake db:migrate। এটাই

এবং কলামটির নতুন নামকরণের জন্য আপনি অন্য একটি স্থানান্তর লিখতে পারেন

 def change
    rename_column :table_name, :old_name, :new_name
  end

এটাই.


rake db:rollbackএকটি দুর্দান্ত পরামর্শ। তবে আপনি যেমন বলেছিলেন, কেবলমাত্র যদি মাইগ্রেশনটি এখনও ঠেলাঠেলি করা হয় না।
ড্যানিয়েলিকারিকোডস

9

বিকল্প বিকল্প হিসাবে, যদি আপনি মাইগ্রেশনের ধারণার সাথে বিবাহিত না হন তবে অ্যাক্টিভেকর্ডের জন্য একটি বাধ্যতামূলক রত্ন রয়েছে যা আপনার জন্য নাম পরিবর্তন করে, ডেটাম্পার শৈলীর পরিচালনা করবে। আপনি যা করেন তা হ'ল আপনার মডেলের কলামের নাম পরিবর্তন করুন (এবং নিশ্চিত করুন যে আপনি মডেল.আটো_গ্রেড! আপনার মডেল.আরবি এর নীচে রেখেছেন) এবং ভায়োলা! উড়ে ডেটাবেস আপডেট করা হয়।

https://github.com/DAddYE/mini_record

দ্রষ্টব্য: দ্বন্দ্ব রোধ করতে আপনার প্রয়োজন হবে ডিবি / স্কিমা.আরবি

এখনও বিটা পর্যায়ক্রমে এবং স্পষ্টতই সবার জন্য নয় তবে এখনও একটি বাধ্যবাধকতা পছন্দ (বর্তমানে আমি এটি কোনও সমস্যা ছাড়াই দুটি অ-তুচ্ছ উত্পাদন অ্যাপ্লিকেশনগুলিতে ব্যবহার করছি)


8

আপনার যদি কলামের নাম পরিবর্তন করতে হয় তবে ডুপ্লিকেট কলাম নামের ত্রুটি এড়াতে আপনাকে স্থানধারক তৈরি করতে হবে । এখানে একটি উদাহরণ:

class SwitchColumns < ActiveRecord::Migration
  def change
    rename_column :column_name, :x, :holder
    rename_column :column_name, :y, :x
    rename_column :column_name, :holder, :y
  end
end

7

যদি বর্তমান ডেটা আপনার জন্য গুরুত্বপূর্ণ না হয় তবে আপনি কেবল এটি ব্যবহার করে আপনার মূল স্থানান্তর সরিয়ে নিতে পারেন:

rake db:migrate:down VERSION='YOUR MIGRATION FILE VERSION HERE'

উদ্ধৃতি ব্যতীত, তারপরে মূল মাইগ্রেশনে পরিবর্তন আনুন এবং এর মাধ্যমে আবার আপ মাইগ্রেশন চালান:

rake db:migrate

6

কেবলমাত্র একটি নতুন স্থানান্তর তৈরি করুন এবং একটি ব্লকে rename_columnনীচে হিসাবে ব্যবহার করুন ।

rename_column :your_table_name, :hased_password, :hashed_password


5

ম্যানুয়ালি আমরা নীচের পদ্ধতিটি ব্যবহার করতে পারি:

মাইগ্রেশনটি আমরা ম্যানুয়ালি এডিট করতে পারি:

  • খোলা app/db/migrate/xxxxxxxxx_migration_file.rb

  • আপডেট hased_passwordকরার জন্যhashed_password

  • নীচের কমান্ড চালান

    $> rake db:migrate:down VERSION=xxxxxxxxx

তারপরে এটি আপনার স্থানান্তর সরিয়ে ফেলবে:

$> rake db:migrate:up VERSION=xxxxxxxxx

এটি আপডেট হওয়া পরিবর্তনের সাথে আপনার মাইগ্রেশন যুক্ত করবে।


এটি নিরাপদ হবে না কারণ আপনি ডেটা আলগা করতে পারেন - যদি কলামটি ইতিমধ্যে লাইভ থাকে। তবে নতুন কলাম এবং / অথবা টেবিলের জন্য করতে পারেন।
তেজাস প্যাটেল

5

স্থানান্তর ফাইল তৈরি করুন:

rails g migration FixName

# ডিবি / মাইগ্রেট / এক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সবি তৈরি করে

আপনার ইচ্ছা করতে মাইগ্রেশন সম্পাদনা করুন।

class FixName < ActiveRecord::Migration
  def change
    rename_column :table_name, :old_column, :new_column
  end
end

5

চালান rails g migration ChangesNameInUsers(বা আপনি এটির নামটি যা চান)

যে শুধু তৈরি করা হয়েছে মাইগ্রেশন ফাইল খুলুন, এবং পদ্ধতিতে এই লাইন যোগ করুন (মাঝখানে def changeএবং end):

rename_column :table_name, :the_name_you_want_to_change, :the_new_name

ফাইলটি সংরক্ষণ করুন এবং rake db:migrateকনসোলে চালান

আপনার schema.dbনামটি ডাটাবেসে বাস্তবে পরিবর্তিত হয়েছে কিনা তা পরীক্ষা করে দেখুন!

আশাকরি এটা সাহায্য করবে :)


5

আসুন কিআইএসএস করি । এটি লাগে তিনটি সহজ পদক্ষেপ। নিম্নলিখিত কারাগার 5.2 জন্য কাজ করে ।

ঘ। একটি মাইগ্রেশন তৈরি করুন

  • rails g migration RenameNameToFullNameInStudents

  • rails g RenameOldFieldToNewFieldInTableName- পরে কোড বেস রক্ষণাবেক্ষণকারীদের পক্ষে এটি পুরোপুরি স্পষ্ট। (টেবিলের নামের জন্য বহুবচন ব্যবহার করুন)।

2. স্থানান্তর সম্পাদনা করুন

# I prefer to explicitly write theআপ andডাউনmethods.

# ./db/migrate/20190114045137_rename_name_to_full_name_in_students.rb

class RenameNameToFullNameInStudents < ActiveRecord::Migration[5.2]
  def up
    # rename_column :table_name, :old_column, :new_column
    rename_column :students, :name, :full_name
  end

  def down
            # Note that the columns are reversed
    rename_column :students, :full_name, :name
  end
end

৩. আপনার স্থানান্তর চালান Run

rake db:migrate

এবং আপনি দৌড় বন্ধ!


4
$:  rails g migration RenameHashedPasswordColumn
invoke  active_record
      create    db/migrate/20160323054656_rename_hashed_password_column.rb

সেই মাইগ্রেশন ফাইলটি খুলুন এবং সেই ফাইলটিকে নীচে হিসাবে সংশোধন করুন (আপনার আসলটি প্রবেশ করুন table_name)

class  RenameHashedPasswordColumn < ActiveRecord::Migration
  def change
    rename_column :table_name, :hased_password, :hashed_password
  end
end


3

রেল মাইগ্রেশনে একটি রুবি তৈরি করুন :

$:> rails g migration Fixcolumnname

মাইগ্রেশন ফাইলটিতে কোড োকান (XXXXXfixcolumnname.rb) :

class Fixcolumnname < ActiveRecord::Migration
  def change
    rename_column :table_name, :old_column, :new_column
  end
end

2

আপনার রুবিটি রেল কনসোলে খুলুন এবং প্রবেশ করুন:

ActiveRecord::Migration.rename_column :tablename, :old_column, :new_column

2

এটি করার জন্য আপনার দুটি উপায় রয়েছে:

  1. এই ধরণের এটি স্বয়ংক্রিয়ভাবে এর বিপরীত কোড চালায়, যখন রোলব্যাক।

    def change
      rename_column :table_name, :old_column_name, :new_column_name
    end
  2. এই ধরণের, এটি rake db:migrateডাউন পদ্ধতিটি কখন চালায় এবং ডাউন পদ্ধতিটি যখন চালায় rake db:rollback:

    def self.up
      rename_column :table_name, :old_column_name, :new_column_name
    end
    
    def self.down
      rename_column :table_name,:new_column_name,:old_column_name
    end

2

আমি 5.2 রেলগুলিতে আছি এবং একটি ছদ্মবেশী ব্যবহারকারীর উপর একটি কলামের নাম পরিবর্তন করার চেষ্টা করছি।

rename_columnবিট আমার জন্য কাজ, কিন্তু একবচন :table_nameএকটি ছুড়ে ফেলে ত্রুটি "ব্যবহারকারী টেবিল পাওয়া যায়নি"। বহুবচন আমার পক্ষে কাজ করেছিল।

rails g RenameAgentinUser

তারপরে মাইগ্রেশন ফাইলটি এতে পরিবর্তন করুন:

rename_column :users, :agent?, :agent

কোথায়: এজেন্ট? পুরানো কলামের নাম।


0

আপডেট - ক্রিয়েট টেবিলের একটি ঘনিষ্ঠ কাজিন হ'ল চ্যানেল_টিবল, বিদ্যমান টেবিলগুলি পরিবর্তনের জন্য ব্যবহৃত হয়। এটি তৈরি করতে_ টেবিলের অনুরূপ ফ্যাশনে ব্যবহৃত হয় তবে ব্লকটিতে প্রাপ্ত বস্তুটি আরও কৌশলগুলি জানে। উদাহরণ স্বরূপ:

class ChangeBadColumnNames < ActiveRecord::Migration
  def change
    change_table :your_table_name do |t|
      t.rename :old_column_name, :new_column_name
    end
  end
end

এই পদ্ধতিটি আরও কার্যকর যদি আমরা অন্যান্য পরিবর্তিত পদ্ধতি যেমন: সূচকগুলি সরান / যোগ কর / সূচকগুলি সরিয়ে / কলাম যুক্ত করি, যেমন আমরা আরও পছন্দ করতে পারি:

# Rename
t.rename :old_column_name, :new_column_name
# Add column
t.string :new_column
# Remove column
t.remove :removing_column
# Index column
t.index :indexing_column
#...

0

কমান্ডটি ব্যবহার করে মাইগ্রেশন উত্পন্ন করুন

rails g migration rename_hased_password

এর পরে পরিবর্তন পদ্ধতিতে মাইগ্রেশনটি নিম্নলিখিত লাইন যুক্ত করুন

rename_column :table, :hased_password, :hashed_password

এই কৌতুক করতে হবে।


0

রেলগুলি 5 মাইগ্রেশন পরিবর্তন করে

উদাহরণ:

রেলস জি মডেল ছাত্র ছাত্রী নাম: স্ট্রিং বয়স: পূর্ণসংখ্যা

যদি আপনি নাম হিসাবে ছাত্র_নাম কলাম পরিবর্তন করতে চান

দ্রষ্টব্য: - আপনি রেল চালনা না করলে db: স্থানান্তর করুন

আপনি নিম্নলিখিত পদক্ষেপগুলি করতে পারেন

রেল d মডেল ছাত্র ছাত্রী নাম: স্ট্রিং বয়স: পূর্ণসংখ্যা

এটি উত্পন্ন স্থানান্তর ফাইলটি সরিয়ে ফেলবে, এখন আপনি নিজের কলামের নামটি সংশোধন করতে পারেন

রেলস জি মডেল শিক্ষার্থীর নাম: স্ট্রিং বয়স: পূর্ণসংখ্যা

যদি আপনি স্থানান্তরিত হন (রেলস ডিবি: মাইগ্রেট), কলামের নাম পরিবর্তন করতে নিম্নলিখিত বিকল্পগুলি

রেল g মাইগ্রেশন সরান স্টুডেন্টনামফ্রমে স্টুডেন্ট ছাত্র_নাম: স্ট্রিং

রেলস জি মাইগ্রেশন অ্যাডনামটোস্টুডেন্ট নাম: স্ট্রিং


এটি হওয়া উচিত নয়: rails g migration RemoveStudentNameFromStudentS student_name:string(শিক্ষার্থীরা বহুবচন)?
বিকেএসপুরজন

এছাড়াও এটি বিপজ্জনক: কলামটির নতুন নামকরণ করা হয় না, পুরোপুরি সরানো হয় এবং তারপরে পুনরায় সংযুক্ত করা হয়। ডাটা কি হবে? এটি ব্যবহারকারী যা চাইবে তা নাও হতে পারে।
বিকেএসপুরজন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.