আপনি textকোনও দৈর্ঘ্যের সীমা ছাড়াই একটি স্ট্রিং চাইলে আপনার রেলগুলি ব্যবহার করা উচিত । এর মতো একটি স্থানান্তর:
def up
change_column :your_table, :your_column, :text
end
def down
change_column :your_table, :your_column, :string
end
জিনিস বাছাই করা উচিত। :null => falseএটির শেষে আপনি বা অন্য কোনও বিকল্পও চাইতে পারেন ।
আপনি যখন stringএকটি স্পষ্ট সীমা ছাড়াই একটি কলাম ব্যবহার করবেন, তখন রেলগুলি অন্তর্ভুক্ত করবে :limit => 255। তবে আপনি যদি ব্যবহার করেন textতবে ডাটাবেস সমর্থন করে এমন যথেচ্ছ দৈর্ঘ্যের স্ট্রিংয়ের টাইপ পাবেন get পোস্টগ্রাইএসকিউএল আপনাকে varcharদৈর্ঘ্য ছাড়াই একটি কলাম ব্যবহার করার অনুমতি দেয় তবে বেশিরভাগ ডাটাবেসগুলি তার জন্য একটি পৃথক প্রকার ব্যবহার করে এবং রেলগুলি varcharদৈর্ঘ্য ছাড়াই জানে না । পোস্টগ্রিএসকিউএল-এ textএকটি textকলাম পেতে আপনাকে রেলগুলিতে ব্যবহার করতে হবে । সেখানে ধরনের একটি কলাম মধ্যে পোস্টগ্রি কোন পার্থক্য textলিখুন এক varchar(কিন্তু varchar(n) হয় বিভিন্ন)। তদ্ব্যতীত, আপনি যদি পোস্টগ্রিজ এসকিউএল শীর্ষে স্থাপন করছেন তবে ব্যবহার করার কোনও কারণ নেই :string(varchar একে)), ডাটাবেস ব্যবহার করে textএবংvarchar(n)অতিরিক্ত দৈর্ঘ্যের সীমাবদ্ধতা ব্যতীত অভ্যন্তরীণভাবে একই varchar(n); কলামের আকারে আপনার যদি কেবল বাহ্যিক বাধা (যেমন একটি সরকারী ফর্ম বলে যে 897 / বি ফর্মের 432 ক্ষেত্রটি 23 অক্ষর দীর্ঘ হবে) কেবলমাত্র আপনার varchar(n)( :stringএকে) ব্যবহার করা উচিত ।
একটি সরু হিসাবে, আপনি যদি stringকোথাও একটি কলাম ব্যবহার করছেন , আপনার সর্বদা :limitনিজের জন্য একটি অনুস্মারক হিসাবে নির্দিষ্ট করা উচিত যে একটি সীমা রয়েছে এবং সীমা অতিক্রম না করে তা নিশ্চিত করার জন্য আপনার মডেলটিতে একটি বৈধতা থাকা উচিত। আপনি যদি সীমা অতিক্রম করেন, পোস্টগ্রিসকিউএল অভিযোগ করবে এবং একটি ব্যতিক্রম উত্থাপন করবে, মাইএসকিউএল চুপচাপ স্ট্রিং কেটে দেবে বা অভিযোগ করবে (সার্ভারের কনফিগারেশনের উপর নির্ভর করে), এসকিউএলাইট এটিকে যেমন আছে তেমন পাস করতে দেবে, এবং অন্যান্য ডাটাবেসগুলি অন্য কিছু করবে (সম্ভবত অভিযোগ করবে) ।
এছাড়াও, আপনার একই ডেটাবেস (যা সাধারণত হিরোকুতে পোস্টগ্র্রেএসকিউএল হবে) এর শীর্ষে বিকাশ, পরীক্ষা এবং স্থাপন করা উচিত, এমনকি আপনার ডাটাবেস সার্ভারের একই সংস্করণ ব্যবহার করা উচিত। ডাটাবেসগুলির মধ্যে অন্যান্য পার্থক্য রয়েছে (যেমন GROUP BY এর আচরণ) যেটি অ্যাক্টিভেকর্ড আপনাকে এড়ায় না। আপনি সম্ভবত এটি ইতিমধ্যে করছেন তবে আমি ভেবেছিলাম এটি যেভাবেই উল্লেখ করব।
আপডেট : অ্যাক্টিভেকর্ডের নতুন সংস্করণগুলি varcharসীমা ছাড়াই বুঝতে পারে তাই পোস্টগ্র্রেএসকিউএল সহ কমপক্ষে আপনি বলতে পারেন:
change_column :your_table, :your_column, :string, limit: nil
একটি varchar(n)কলাম পরিবর্তন করতে varchar। textএবং varcharএখনও একই জিনিস যতটা পোস্টগ্রি সংশ্লিষ্ট হয় কিন্তু কিছু ফর্ম বিল্ডার তাদের ভিন্নভাবে বিবেচনা করবে আছেন: varcharএকটি পায় <input type="text">যেহেতু textএকটি মাল্টি-লাইন পায় <textarea>।