ฉันจะหารายการประเภทข้อมูลที่สามารถใช้ใน Ruby on Rails ได้ที่ไหน เช่น
text
string
integer
float
date
ฉันเรียนรู้เกี่ยวกับสิ่งใหม่ ๆ อยู่เสมอและฉันชอบที่จะมีรายการที่ฉันสามารถอ้างอิงได้ง่าย
ฉันจะหารายการประเภทข้อมูลที่สามารถใช้ใน Ruby on Rails ได้ที่ไหน เช่น
text
string
integer
float
date
ฉันเรียนรู้เกี่ยวกับสิ่งใหม่ ๆ อยู่เสมอและฉันชอบที่จะมีรายการที่ฉันสามารถอ้างอิงได้ง่าย
คำตอบ:
นี่คือประเภทข้อมูล Rails 4 (การโยกย้าย ActiveRecord):
:binary
:boolean
:date
:datetime
:decimal
:float
:integer
:bigint
:primary_key
:references
:string
:text
:time
:timestamp
ที่มา: http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-add_column
เหล่านี้เป็นเช่นเดียวกับทางรถไฟ 3
หากคุณใช้ PostgreSQL คุณสามารถใช้ประโยชน์จากสิ่งเหล่านี้ได้:
:hstore
:json
:jsonb
:array
:cidr_address
:ip_address
:mac_address
พวกเขาจะถูกเก็บไว้เป็นสตริงถ้าคุณเรียกใช้แอปของคุณด้วยฐานข้อมูลที่ไม่ใช่ PostgreSQL
แก้ไข 2016-Sep-19:
มีดาต้าสเปซที่เฉพาะเจาะจงเพิ่มมากขึ้นใน Rails 4 และอีกมากใน Rails 5
text
ชนิดข้อมูล แต่ทางรถไฟยังคงสามารถจัดการกับมันได้? เกิดอะไรขึ้นในพื้นหลัง
nil
ในฐานข้อมูลที่ไม่ใช่ postgres Model.columns_hash["column_name"].type
คุณสามารถตรวจสอบประเภทในคอนโซลด้วย นี่เป็นเพียงสิ่งที่ฉันพบเมื่อใช้: ประเภทคอลัมน์ json ฉันอาจผิดและสิ่งนี้อาจไม่เกิดขึ้นกับทุกคน แต่ฉันคิดว่าฉันจะแจ้งให้ผู้อ่านในอนาคตทราบว่าพวกเขามีปัญหา ไม่ว่า +1 สำหรับคำตอบนี้เพราะช่วยฉันได้จริงๆ
คุณอาจพบว่ามีประโยชน์ที่จะทราบโดยทั่วไปว่ามีการใช้ข้อมูลประเภทใดใน:
:string
- สำหรับประเภทข้อมูลขนาดเล็กเช่นชื่อเรื่อง ( คุณควรเลือกสตริงหรือข้อความ ):text
- ใช้สำหรับข้อมูลที่เป็นข้อความที่ยาวขึ้นเช่นย่อหน้าของข้อมูล:binary
- ใช้สำหรับจัดเก็บข้อมูลเช่นรูปภาพเสียงหรือภาพยนตร์:boolean
- ใช้สำหรับเก็บค่าจริงหรือเท็จ:date
- เก็บเฉพาะวันที่:datetime
- เก็บวันที่และเวลาไว้ในคอลัมน์ :time
- สำหรับเวลาเท่านั้น:timestamp
- สำหรับการจัดเก็บวันที่และเวลาในคอลัมน์ ( ความแตกต่างระหว่างวันที่และเวลาและเวลา ):decimal
- ใช้สำหรับทศนิยม ( ตัวอย่างวิธีใช้ทศนิยม ):float
- สำหรับทศนิยม ( ทศนิยมและทศนิยมต่างกันอย่างไร ):integer
- สำหรับจำนวนเต็ม:primary_key
- รหัสเฉพาะที่สามารถระบุแต่ละแถวในตารางโดยไม่ซ้ำกันนอกจากนี้ยังมีการอ้างอิงที่ใช้ในการสร้างการเชื่อมโยง แต่ผมไม่แน่ใจว่านี้เป็นชนิดข้อมูลที่เกิดขึ้นจริง
New Rails 4 datatypes พร้อมใช้งานใน PostgreSQL:
:hstore
- จัดเก็บคู่คีย์ / ค่าภายในค่าเดียว ( เรียนรู้เพิ่มเติมเกี่ยวกับชนิดข้อมูลใหม่นี้ ):array
- การจัดเรียงของตัวเลขหรือสตริงในแถวใดแถวหนึ่ง ( เรียนรู้เพิ่มเติมเกี่ยวกับมันและดูตัวอย่าง ):cidr_address
- ใช้สำหรับที่อยู่โฮสต์ IPv4 หรือ IPv6:inet_address
- ใช้สำหรับที่อยู่โฮสต์ IPv4 หรือ IPv6 เช่นเดียวกับ cidr_address แต่ก็ยอมรับค่าด้วยบิตที่ไม่ใช่ศูนย์ทางด้านขวาของ netmask:mac_address
- ใช้สำหรับที่อยู่โฮสต์ของ MACเรียนรู้เพิ่มเติมเกี่ยวกับประเภทข้อมูลที่อยู่ที่นี่และที่นี่
นี่คือคู่มืออย่างเป็นทางการสำหรับการย้ายถิ่น: http://edgeguides.rubyonrails.org/migrations.html
uuid
ประเภทที่สามารถใช้เป็นฟิลด์ปกติเช่นt.uuid :name...
หรือเป็นคีย์หลักเช่นcreate_table :users, id: :uuid do...
หรือt.primary_key :id, :uuid, :default => 'uuid_generate_v1()'
ActiveRecord::ConnectionAdapters::PostgreSQL::ColumnMethods
สำหรับ ไฮไลท์ ได้แก่money
, json
, xml
,daterange
สิ่งสำคัญคือต้องรู้ไม่เพียง แต่ชนิด แต่การแมปประเภทเหล่านี้กับชนิดฐานข้อมูลด้วย:
เพิ่มแหล่งที่มา - การพัฒนาเว็บ Agile ด้วย Rails 4
NATIVE_DATABASE_TYPES
อะแดปเตอร์ที่คุณต้องการได้เสมอ - github.com/rails/rails/blob/master/activerecord/lib/…
คุณสามารถเข้าถึงรายการนี้ทุกครั้งที่คุณต้องการ (แม้ว่าคุณจะไม่มีการเข้าถึงอินเทอร์เน็ต) ผ่าน:
rails generate model -h
Rails4 มีประเภทข้อมูลเพิ่มเติมสำหรับ Postgres
ตัวอย่างเช่น railscast # 400 บอกชื่อสองข้อ:
Rails 4 รองรับการใช้งาน datatypes แบบดั้งเดิมใน Postgres และเราจะแสดงสองสิ่งนี้ที่นี่แม้ว่าจะรองรับได้มากขึ้น: array และ hstore เราสามารถจัดเก็บอาร์เรย์ในคอลัมน์ประเภทสตริงและระบุประเภทสำหรับ hstore
นอกจากนี้คุณยังสามารถใช้ cidr, inet และ macaddr สำหรับข้อมูลเพิ่มเติม: