আমি জানি যে আপনি অ্যাক্টিভেকর্ডকে কনসোলটিতে টেবিলগুলি তালিকাবদ্ধ করতে অনুরোধ করতে পারেন:
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.columns
srt32 দ্বারা প্রস্তাবিত পদ্ধতির সাথে সঠিকভাবে সেট করা আছে ।
তিনটি রেল ব্যবহার করে আপনি কেবল মডেলের নাম টাইপ করতে পারেন:
> 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
ডাটাবেস কনফিগার ডেটা সহ কলামগুলি সম্পর্কে আরও তথ্য পাওয়ার মতো কিছু চালাতে পারেন ।