जवाबों:
यह एक तालिका से column_names को सूचीबद्ध करेगा
Model.column_names
e.g. User.column_names
Model.columns
ActiveRecord के माध्यम से एक तालिका के लिए सभी जानकारी प्रदान करता है। मेरे लिए महत्वपूर्ण रूप से यह विश्वास पाने का एकमात्र और सबसे आसान तरीका था कि डेटाबेस स्तर पर मेरी प्राथमिक कुंजी वास्तव में क्या थी।
यह कॉलम प्राप्त करता है, न कि केवल कॉलम नाम और ActiveRecord :: Base :: Connection का उपयोग करता है, इसलिए कोई मॉडल आवश्यक नहीं है। डीबी की संरचना को जल्दी से तैयार करने के लिए आसान।
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...)
यदि आप SQL कमांड के साथ सहज हैं, तो आप अपने ऐप के फ़ोल्डर में प्रवेश कर सकते हैं और चला सकते हैं rails db
, जिसका संक्षिप्त रूप है rails dbconsole
। यह आपके डेटाबेस के शेल में प्रवेश करेगा, चाहे वह साइक्लाइट हो या mysql।
फिर, आप sql कमांड का उपयोग करके टेबल कॉलम को क्वेरी कर सकते हैं जैसे:
pragma table_info(your_table);
describe your_table;
, सही नहीं है, लेकिन काम करता है
आप rails dbconsole
sqlite कंसोल को खोलने के लिए कमांड लाइन टूल में चला सकते हैं । फिर .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
}
इस उपयोगी जानकारी के पूरक, उदाहरण के लिए रेल कंसोल ओ रेल्स डबकोन्स का उपयोग करना:
छात्र रेल मॉडल है, रेल कंसोल का उपयोग कर:
$ 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)
अन्य विकल्प का उपयोग SQLite रेल के माध्यम से:
$ 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
डेटाबेस कॉन्फ़िगरेशन डेटा सहित स्तंभों के बारे में अधिक जानकारी प्राप्त करने के लिए कुछ चला सकते हैं ।