.rename_table
একটি উদাহরণ পদ্ধতি, কোনও শ্রেণিবদ্ধ পদ্ধতি নয়, তাই কলিং Class.method
কাজ করে না। এর পরিবর্তে আপনি ভালো দৃষ্টান্ত উপর ক্লাসের একটা নিদর্শন পদ্ধতি তৈরি, এবং ডাকতে ভালবাসি, থাকবে না: Class.new.method
।
[সম্পাদনা] এই উদাহরণস্বরূপ, ActiveRecord::ConnectionAdapters::SchemaStatements
এমনকি কোনও শ্রেণিও নয় (ক্যামের দ্বারা নির্দেশিত), এর অর্থ হল যে আমি উপরে যা বলেছি তা অনুসারে আপনি এটির কোনও উদাহরণও তৈরি করতে পারবেন না। এমনকি আপনি যদি ক্যামের উদাহরণ ব্যবহার করেন class Foo; include ActiveRecord::ConnectionAdapters::SchemaStatements; def bar; rename_table; end; end;
, এটি এখনও rename_table
ব্যতিক্রম হিসাবে কাজ করবে না ।
অন্যদিকে, ActiveRecord::ConnectionAdapters::MysqlAdapter
এটি একটি শ্রেণি, এবং সম্ভবত এই শ্রেণিটি আপনার টেবিলটির নাম পরিবর্তন করতে (বা এসকিউএলাইট বা পোস্টগ্রিএসকিউএল, আপনি কী ডেটাবেস ব্যবহার করছেন তার উপর নির্ভর করে) ব্যবহার করতে হবে। এখন, যেমনটি ঘটে ActiveRecord::ConnectionAdapters::MysqlAdapter
এরই মধ্যে এটি ইতিমধ্যে অ্যাক্সেসযোগ্য Model.connection
, সুতরাং Model.connection.rename_table
আপনার অ্যাপ্লিকেশনটিতে কোনও মডেল ব্যবহার করে আপনার সম্পূর্ণরূপে সক্ষম হওয়া উচিত । [/ Edit]
তবে আপনি যদি কোনও টেবিলের স্থায়ীভাবে নাম পরিবর্তন করতে চান তবে আমি এটি করার জন্য মাইগ্রেশন ব্যবহার করার পরামর্শ দেব। রেলগুলির সাথে আপনার ডেটাবেস কাঠামোটি পরিচালনা করার পক্ষে এটি সহজ এবং পছন্দের উপায়। এটি কীভাবে করবেন তা এখানে:
# Commandline
rails generate migration rename_my_table
# In db/migrate/[timestamp]_rename_my_table.rb:
class RenameMyTable < ActiveRecord::Migration
def self.up
rename_table :my_table, :my_new_table
end
def self.down
rename_table :my_new_table, :my_table
end
end
তারপরে, আপনি নিজের স্থানান্তর rake db:migrate
(যা self.up
পদ্ধতিটি কল করে ) দিয়ে চালাতে পারেন এবং মাইগ্রেশনটি পূর্বাবস্থায় ফেলার জন্য rake db:rollback
(যা কল করে self.down
) ব্যবহার করতে পারেন ।