আমি জানি যে আপনি অ্যাক্টিভেকর্ডকে কনসোলটিতে টেবিলগুলি তালিকাবদ্ধ করতে অনুরোধ করতে পারেন:
ActiveRecord::Base.connection.tables
এমন কোনও কমান্ড রয়েছে যা প্রদত্ত টেবিলে কলামগুলি তালিকাভুক্ত করবে?
আমি জানি যে আপনি অ্যাক্টিভেকর্ডকে কনসোলটিতে টেবিলগুলি তালিকাবদ্ধ করতে অনুরোধ করতে পারেন:
ActiveRecord::Base.connection.tables
এমন কোনও কমান্ড রয়েছে যা প্রদত্ত টেবিলে কলামগুলি তালিকাভুক্ত করবে?
উত্তর:
এটি একটি সারণী থেকে কলাম_নাম তালিকাবদ্ধ করবে
Model.column_names
e.g. User.column_names
Model.columnsঅ্যাক্টিভেকর্ডের মাধ্যমে টেবিলের জন্য সমস্ত তথ্য ব্যবহার করে। গুরুতরভাবে আমার কাছে এটি ছিল যে আমার প্রাথমিক কীটি সত্যিকারের ডাটাবেস স্তরে ছিল তার আস্থা অর্জনের একমাত্র এবং সহজ উপায় ।
এটি কলামগুলি পাবে, কেবল কলামের নাম নয় এবং অ্যাক্টিভেকর্ড :: বেস :: সংযোগ ব্যবহার করে, সুতরাং কোনও মডেলের প্রয়োজন হয় না। দ্রুত একটি ডিবি কাঠামো আউটপুট আউট জন্য সহজ।
ActiveRecord::Base.connection.tables.each do |table_name|
puts table_name
ActiveRecord::Base.connection.columns(table_name).each do |c|
puts "- #{c.name}: #{c.type} #{c.limit}"
end
end
নমুনা আউটপুট: http://screencast.com/t/EsNlvJEqM
primaryবিশিষ্টটিকে সঠিকভাবে সেট করে না (সমস্ত কলামে রয়েছে primary=nil)। এটি Model.columnssrt32 দ্বারা প্রস্তাবিত পদ্ধতির সাথে সঠিকভাবে সেট করা আছে ।
তিনটি রেল ব্যবহার করে আপনি কেবল মডেলের নাম টাইপ করতে পারেন:
> User
gives:
User(id: integer, name: string, email: string, etc...)
চারটি রেলের মধ্যে আপনাকে প্রথমে একটি সংযোগ স্থাপন করতে হবে:
irb(main):001:0> User
=> User (call 'User.connection' to establish a connection)
irb(main):002:0> User.connection; nil #call nil to stop repl spitting out the connection object (long)
=> nil
irb(main):003:0> User
User(id: integer, name: string, email: string, etc...)
আপনি যদি এসকিউএল কমান্ডগুলির সাথে স্বাচ্ছন্দ্য বোধ করেন তবে আপনি আপনার অ্যাপ্লিকেশনটির ফোল্ডারটি প্রবেশ করতে পারেন এবং চালাতে পারেন rails db, এটি একটি সংক্ষিপ্ত রূপ rails dbconsole। এটি আপনার ডাটাবেসের শেলটি প্রবেশ করবে, এটি স্ক্লাইট বা মাইএসকিএল হোক।
তারপরে, আপনি সারণী কলামগুলি যেমন sql কমান্ড ব্যবহার করে জিজ্ঞাসা করতে পারেন:
pragma table_info(your_table);
describe your_table;, নিখুঁত নয় তবে কাজ করে
rails dbconsoleস্ক্লাইট কনসোল খোলার জন্য আপনি কমান্ড লাইন সরঞ্জামটি চালাতে পারেন । তারপর টাইপ .tablesতালিকায় সব টেবিল এবং .fullschemaকলাম নাম এবং প্রকারগুলি সঙ্গে সব টেবিল একটি তালিকা পাবেন।
একটি টেবিল আমি সাধারণত এই সঙ্গে যেতে কলাম তালিকাবদ্ধ করার জন্য:
Model.column_names.sort।
i.e. Orders.column_names.sort
কলামের নামগুলি বাছাই করা আপনি যা খুঁজছেন তা সন্ধান করা সহজ করে তোলে।
আরও তথ্যের জন্য কলামের প্রতিটি এই ব্যবহার করুন:
Model.columns.map{|column| [column.name, column.sql_type]}.to_h।
এটি একটি দুর্দান্ত হ্যাশ সরবরাহ করবে। উদাহরণ স্বরূপ:
{
id => int(4),
created_at => datetime
}
এই দরকারী তথ্য পরিপূরক, উদাহরণস্বরূপ রেল কনসোল ও রেলস dbconsole ব্যবহার করে:
শিক্ষার্থী আমার মডেল, রেল কনসোল ব্যবহার করে:
$ rails console
> Student.column_names
=> ["id", "name", "surname", "created_at", "updated_at"]
> Student
=> Student(id: integer, name: string, surname: string, created_at: datetime, updated_at: datetime)
রেলের মাধ্যমে এসকিউএলাইট ব্যবহার করে অন্য বিকল্প:
$ rails dbconsole
sqlite> .help
sqlite> .table
ar_internal_metadata relatives schools
relationships schema_migrations students
sqlite> .schema students
CREATE TABLE "students" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "surname" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL);
শেষ পর্যন্ত আরও তথ্যের জন্য।
sqlite> .help
আশাকরি এটা সাহায্য করবে!
Model.columnsডাটাবেস কনফিগার ডেটা সহ কলামগুলি সম্পর্কে আরও তথ্য পাওয়ার মতো কিছু চালাতে পারেন ।