ฉันจะหารายการประเภทข้อมูลที่สามารถใช้ใน Ruby on Rails ได้ที่ไหน เช่น
textstringintegerfloatdate
ฉันเรียนรู้เกี่ยวกับสิ่งใหม่ ๆ อยู่เสมอและฉันชอบที่จะมีรายการที่ฉันสามารถอ้างอิงได้ง่าย
ฉันจะหารายการประเภทข้อมูลที่สามารถใช้ใน 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 สำหรับข้อมูลเพิ่มเติม: