Ruby on Rails tạo trường mô hình: type - các tùy chọn cho trường: type là gì?


308

Tôi đang cố gắng tạo một mô hình mới và quên cú pháp để tham chiếu ID của một mô hình khác. Tôi tự tìm kiếm nó, nhưng tôi đã không tìm ra, trong số tất cả các liên kết tài liệu Ruby on Rails của tôi, làm thế nào để tìm nguồn chính xác.

$ rails g model Item name:string description:text(và ở đây reference:producthoặc references:product). Nhưng câu hỏi tốt hơn là ở đâu hoặc làm thế nào tôi có thể tìm kiếm loại silliness này một cách dễ dàng trong tương lai?

Lưu ý: Tôi đã học được một cách khó khăn là nếu tôi nhập sai một trong các tùy chọn này và chạy di chuyển thì Ruby on Rails sẽ hoàn toàn làm hỏng cơ sở dữ liệu của tôi ... và rake db:rollbackbất lực trước những vụ lừa đảo như vậy. Tôi chắc chắn là tôi không hiểu điều gì đó, nhưng cho đến khi tôi làm ... thông tin "chi tiết" được trả về rails g modelvẫn khiến tôi gãi ...


Điều gì về: uniq và: tùy chọn trường chỉ mục? Giống như trong "rails g mô hình tiêu đề cơ thể: văn bản theo dõi_id: số nguyên: uniq". Tôi không thể tìm thấy tài liệu cho những người. Có còn nữa không?
Kangur

11
rails generate model --help
Dennis

1
Sử dụng kiểm soát phiên bản sẽ cung cấp cho bạn một cách dễ dàng để khôi phục mọi tệp được tạo. Và nếu sự cố nằm trong cơ sở dữ liệu ... tốt, bạn luôn có thể thực hiện db: lược đồ: tải
Hector Ordonez

1
vâng, nó đã được nhìn thấy hơn 140 nghìn lần và 243 người tính đến ngày hôm nay thấy nó hữu ích vì vậy đây không phải là một câu hỏi ngớ ngẩn :)
BKSpurgeon

Câu trả lời:


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

Xem phần định nghĩa bảng .


13
hmm ... không đề cập đến :referencehoặc :referencestrong câu trả lời của bạn hoặc giải thích về cách chuyển nó đến máy phát điện trong liên kết bạn cung cấp?!?
Meltemi

53
Điều đó không trả lời câu hỏi nào cả.
MikeEL

1
Chọn đây là câu trả lời nhưng biết rằng : tài liệu tham khảo cũng là một lựa chọn.
Meltemi

14
Có một số tài liệu thực sự xác định các loại cột? Ví dụ, stringkhác nhau như thế nào text?
Grant Birchmeier

3
@Kangur các hậu tố uniqindexhậu tố (và tất cả các loại) được ghi lại trong cách sử dụng rails generate model. Chạy rails g modelđể xem các tài liệu sử dụng.
Dennis

188

Để tạo một mô hình tham chiếu đến một mô hình khác, hãy sử dụng trình tạo mô hình Ruby on Rails:

$ rails g model wheel car:references

Điều đó tạo ra ứng dụng / mô hình / wheel.rb :

class Wheel < ActiveRecord::Base
  belongs_to :car
end

Và thêm di chuyển sau:

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

Khi bạn chạy di chuyển, phần sau sẽ kết thúc trong db / lược đồ.rb của bạn :

$ rake db:migrate

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

Đối với tài liệu, điểm bắt đầu cho các trình tạo đường ray là Ruby on Rails: Hướng dẫn về Dòng lệnh Rails chỉ cho bạn Tài liệu API để biết thêm về các loại trường có sẵn.


4
hơi hết hạn với những nhận xét, nhưng đây là những câu trả lời cho câu hỏi này. +1
omninonsense

7

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

Tôi cũng tìm thấy các hướng dẫn khó sử dụng. Dễ hiểu, nhưng khó tìm thấy những gì tôi đang tìm kiếm.

Ngoài ra, tôi có các dự án tạm thời mà tôi chạy các rails generatelệnh trên. Sau đó, khi tôi làm cho họ làm việc, tôi chạy nó trong dự án thực sự của mình.

Tham khảo cho mã trên: http://guides.rubyonrails.org/getting_started.html#associating-models


3

Hãy nhớ không viết hoa văn bản của bạn khi viết lệnh này. Ví dụ:

Viết:

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

Đừng viết:

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

Ít nhất đó là một vấn đề với tôi.


Chờ đợi?!? Gì? Tôi viết hoa tên mô hình của tôi tất cả các thời gian! "Vấn đề" nào bạn đang thấy?
Meltemi

2
Tôi không nói về tên người mẫu của bạn, mà là tên 'Người mẫu'. Tôi đã cố gắng tạo một mô hình như thế này: rails g Tiêu đề sản phẩm mô hình: chuỗi và got: Không thể tìm thấy Mô hình trình tạo. Vì vậy, tôi đã thử nó như thế này: rails g model title title: chuỗi và nó đã hoạt động.
Victor Augusto

1
Ah. Chưa gặp b4 đó. Mẹo tốt!
Meltemi

2
(Đây không phải là tên model là vấn đề, đó là từ được modeldùng để chỉ máy phát điện. Tốt rails g model Product …thôi.)
Asherah


0

ROR rất đơn giản để tạo một mô hình tham chiếu khác.

rails g model Tên mục: mô tả chuỗi: văn bản sản phẩm: tài liệu tham khảo

Mã này sẽ thêm cột 'sản phẩm' trong bảng Mục


0

Có rất nhiều kiểu dữ liệu bạn có thể đề cập trong khi tạo mô hình, một số ví dụ là:

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

cú pháp:

field_type:data_type

0

Tôi đã có cùng một vấn đề, nhưng mã của tôi có một chút khác biệt.

def new
 @project = Project.new
end

Và hình thức của tôi trông như thế này:

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

Điều đó là hoàn toàn chính xác, vì vậy tôi không biết làm thế nào để tìm ra nó.

Cuối cùng, chỉ cần thêm

url: { projects: :create }

sau

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

đã làm cho tôi.


Đây có thể là câu trả lời tốt nhưng tôi không chắc chắn làm thế nào nó liên quan đến OP mà là về các loại trường ( :integer, :string, vv ...).
Meltemi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.