Ruby on Rails สร้างฟิลด์ model: type - ตัวเลือกสำหรับ field: type คืออะไร?


308

ฉันกำลังพยายามสร้างโมเดลใหม่และลืมไวยากรณ์เพื่ออ้างอิง ID ของโมเดลอื่น ฉันค้นหาด้วยตัวเอง แต่ฉันไม่ได้คิดออกมาในบรรดาลิงค์เอกสาร Ruby on Rails ทั้งหมดของฉันวิธีการค้นหาแหล่งที่ชัดเจน

$ rails g model Item name:string description:text(และที่นี่reference:productหรือreferences:product) แต่คำถามที่ดีกว่าคือที่หรือวิธีการที่ผมสามารถมองหาชนิดของความโง่เขลานี้ได้อย่างง่ายดายในอนาคตหรือไม่

หมายเหตุ: ฉันได้เรียนรู้วิธีการที่ยากว่าถ้าฉันพิมพ์ผิดหนึ่งในตัวเลือกเหล่านี้และทำการโยกย้ายของฉันจากนั้น Ruby on Rails จะทำให้ฐานข้อมูลของฉันrake db:rollbackหมดสิ้น ... ฉันแน่ใจว่าฉันไม่เข้าใจบางอย่าง แต่จนกว่าฉันจะ ... ข้อมูล "รายละเอียด" ที่ส่งคืนโดยrails g modelยังทำให้ฉันเกา ...


สิ่งที่เกี่ยวกับ: uniq และ: ตัวเลือกเขตข้อมูลดัชนี? เช่นเดียวกับใน "เนื้อหาหัวเรื่องของโมเดลโมเดล rails g: text tracking_id: จำนวนเต็ม: uniq" ฉันไม่พบเอกสารสำหรับสิ่งเหล่านั้น มีอะไรอีกไหม?
Kangur

11
rails generate model --help
Dennis

1
การใช้การควบคุมเวอร์ชันจะช่วยให้คุณสามารถย้อนกลับไฟล์ที่สร้างขึ้นได้อย่างง่ายดาย และถ้าปัญหาอยู่ในฐานข้อมูล ... ดีคุณสามารถทำ db: schema: load ได้เสมอ
Hector Ordonez

1
มันถูกพบเห็นได้มากกว่า 140,000 ครั้งและ 243 คน ณ วันนี้พบว่ามันมีประโยชน์ดังนั้นจึงไม่ใช่คำถามที่โง่ ๆ ด้วยวิธีใด ๆ :)
BKSpurgeon

คำตอบ:


475
:primary_key, :string, :text, :integer, :float, :decimal, :datetime, :timestamp,
:time, :date, :binary, :boolean, :references

ดูส่วนคำจำกัดความของตาราง


13
อืม ... ไม่เอ่ยถึง:referenceหรือ:referencesในคำตอบของคุณหรือคำอธิบายของวิธีการส่งผ่านไปยังเครื่องกำเนิดไฟฟ้าในลิงค์ที่คุณให้ไว้?!?
Meltemi

53
แต่นั่นไม่ได้ตอบคำถามเลย
MikeEL

1
เลือกสิ่งนี้เป็นคำตอบ แต่ทราบว่า: การอ้างอิงเป็นตัวเลือกเช่นกัน
Meltemi

14
มีเอกสารที่กำหนดประเภทคอลัมน์เหล่านี้จริงๆ บ้างไหม? ตัวอย่างเช่นจะstringแตกต่างจากtextอย่างไร
แกรนท์ Birchmeier

3
@Kangur uniqและindexต่อท้าย (และทุกประเภท) rails generate modelจะถูกบันทึกไว้ในการใช้งานของ เรียกใช้rails g modelเพื่อดูเอกสารการใช้งาน
Dennis

188

ในการสร้างแบบจำลองที่อ้างอิงรูปแบบอื่นให้ใช้ตัวสร้างแบบจำลอง Ruby on Rails:

$ rails g model wheel car:references

ที่ผลิตแอพ / รุ่น / wheel.rb :

class Wheel < ActiveRecord::Base
  belongs_to :car
end

และเพิ่มการโยกย้ายต่อไปนี้:

class CreateWheels < ActiveRecord::Migration
  def self.up
    create_table :wheels do |t|
      t.references :car

      t.timestamps
    end
  end

  def self.down
    drop_table :wheels
  end
end

เมื่อคุณทำการโยกย้ายข้อมูลต่อไปนี้จะสิ้นสุดในdb / schema.rbของคุณ:

$ rake db:migrate

create_table "wheels", :force => true do |t|
  t.integer  "car_id"
  t.datetime "created_at"
  t.datetime "updated_at"
end

สำหรับเอกสารคู่มือจุดเริ่มต้นของเครื่องกำเนิดไฟฟ้า Rails คือRuby on Rails: คำแนะนำเกี่ยวกับ Rails Command Lineซึ่งจะชี้ให้คุณไปที่เอกสาร APIสำหรับข้อมูลเพิ่มเติมเกี่ยวกับประเภทฟิลด์ที่มีอยู่


4
เล็กน้อยจากวันที่มีการแสดงความคิดเห็น แต่นี้เป็นคำตอบสำหรับคำถามนี้ +1
omninonsense

7

$ rails g model Item name:string description:text product:references

ฉันก็พบว่าคู่มือนั้นใช้งานยากเช่นกัน เข้าใจง่าย แต่หายากที่ฉันกำลังมองหา

นอกจากนี้ฉันมีโครงการชั่วคราวที่ฉันเรียกใช้rails generateคำสั่ง จากนั้นเมื่อฉันให้พวกเขาทำงานฉันก็ทำมันในโครงการจริงของฉัน

การอ้างอิงสำหรับโค้ดด้านบน: http://guides.rubyonrails.org/getting_started.html#associating-models


3

อย่าลืมใช้อักษรตัวใหญ่ของคุณเมื่อเขียนคำสั่งนี้ ตัวอย่างเช่น:

เขียน:

rails g model product title:string description:text image_url:string price:decimal

อย่าเขียน:

rails g Model product title:string description:text image_url:string price:decimal

อย่างน้อยมันก็เป็นปัญหาสำหรับฉัน


รอ?!? อะไร? ฉันใช้ประโยชน์ชื่อรุ่นของฉันตลอดเวลา! คุณเห็น "ปัญหา" อะไร
Meltemi

2
ฉันไม่ได้พูดถึงชื่อรุ่นของคุณ แต่เป็นชื่อ 'รุ่น' ฉันพยายามสร้างแบบจำลองเช่นนี้: rails g ชื่อผลิตภัณฑ์ Model: string และได้รับ: ไม่พบรุ่นเครื่องกำเนิดไฟฟ้า ดังนั้นฉันจึงลองแบบนี้: ชื่อผลิตภัณฑ์แบบจำลอง rails g: string และใช้งานได้
Victor Augusto

1
อา. ไม่พบ b4 นั้น เคล็ดลับดี!
Meltemi

2
(ไม่ใช่ชื่อรุ่นที่เป็นปัญหามันเป็นคำmodelที่อ้างถึงเครื่องกำเนิดไฟฟ้าrails g model Product …ใช้ได้)
Asherah

3

http://guides.rubyonrails.orgควรเป็นเว็บไซต์ที่ดีถ้าคุณพยายามที่จะอ่านเนื้อหาพื้นฐานใน Ruby on Rails

นี่คือลิงค์สำหรับเชื่อมโยงโมเดลต่างๆในขณะที่คุณสร้างโมเดล: http://guides.rubyonrails.org/getting_started.html#associating-models


0

มันง่ายมากใน ROR เพื่อสร้างแบบจำลองที่อ้างอิงอื่น ๆ

รุ่นราง g ชื่อรายการ: คำอธิบายสตริง: ผลิตภัณฑ์ข้อความ: การอ้างอิง

รหัสนี้จะเพิ่มคอลัมน์ 'product_id' ในตารางรายการ


0

มีชนิดข้อมูลจำนวนมากที่คุณสามารถพูดถึงได้ในขณะที่สร้างแบบจำลองตัวอย่างคือ

:primary_key, :string, :text, :integer, :float, :decimal, :datetime, :timestamp, :time, :date, :binary, :boolean, :references

ไวยากรณ์:

field_type:data_type

0

ฉันมีปัญหาเดียวกัน แต่รหัสของฉันแตกต่างกันเล็กน้อย

def new
 @project = Project.new
end

และแบบฟอร์มของฉันดูเหมือนว่า:

<%= form_for @project do |f| %>
     and so on....
<% end %>

มันถูกต้องทั้งหมดดังนั้นฉันจึงไม่รู้วิธีคิดออก

ในที่สุดก็เพิ่ม

url: { projects: :create }

หลังจาก

<%= form-for @project ...%>

ทำงานให้ฉัน


นี้อาจจะเป็นคำตอบที่ดี แต่ผมไม่แน่ใจว่ามันเกี่ยวข้องกับ OP ซึ่งเป็นเรื่องเกี่ยวกับประเภทข้อมูล ( :integer, :stringฯลฯ ... )
Meltemi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.