2010-12-08 61 views
276

Tôi đang cố tạo mô hình mới và quên cú pháp để tham chiếu ID của một mẫu khác. Tôi tự tìm kiếm, 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 ra nguồn dứt khoát.Ruby on Rails tạo ra trường model: type - các tùy chọn cho trường: type là gì?

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

Lưu ý: Tôi đã học được cách cứng rằng nếu tôi nhập nhầm một trong các tùy chọn này và chạy di cư của tôi sau đó Ruby on Rails sẽ hoàn toàn vít lên cơ sở dữ liệu của tôi ... và rake db:rollback là bất lực trước screwups như vậy. Tôi chắc rằng tôi chỉ không hiểu điều gì đó, nhưng cho đến khi tôi làm ... thông tin "chi tiết" được trả lại bởi rails g model vẫn khiến tôi gãi ...

+0

Điều gì về: uniq và: các tùy chọn trường chỉ mục? Giống như trong "body title của rails g: text tracking_id: integer: uniq". Tôi không thể tìm thấy tài liệu cho những người đó. Còn nữa không? – Kangur

+10

'đường ray tạo mô hình - trợ giúp ' – Dennis

+1

Sử dụng điều khiển phiên bản sẽ cung cấp cho bạn một cách dễ dàng để khôi phục bất kỳ tệp được tạo nào. Và nếu vấn đề nằm trong cơ sở dữ liệu ... tốt, bạn luôn có thể làm db: schema: load –

Trả lời

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

Xem phần table definitions.

+13

hmm ... không đề cập đến ': tham chiếu' hoặc': tham chiếu' trong câu trả lời của bạn * hoặc * giải thích cách chuyển nó tới máy phát trong liên kết bạn đã cung cấp?!? – Meltemi

+0

Ví dụ: 'đường ray tạo mô hình Tên bài hát: chuỗi mp3url: chuỗi mô tả: văn bản' - sẽ thực hiện một mô hình Bài hát có tên thuộc tính với chuỗi loại, v.v. –

+49

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

7

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

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

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

tham chiếu cho đoạn code trên: http://guides.rubyonrails.org/getting_started.html#associating-models

180

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

$ rails g model wheel car:references 

Đó sản xuất app/models/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, sau đây sẽ kết thúc trong bạn 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 

Đối với tài liệu hướng dẫn, một điểm khởi đầu cho máy phát điện đường ray là Ruby on Rails: A Guide to The Rails Command Line mà chỉ bạn API Documentation để biết thêm về các loại trường có sẵn.

+3

hơi lỗi thời với nhận xét, nhưng đây là câu trả lời _the_ cho câu hỏi này. +1 – omninonsense

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 đề đối với tôi.

+0

Đợi?!? Gì? Tôi luôn tận dụng tên mẫu của mình! "Bạn gặp vấn đề gì"? – Meltemi

+2

Tôi không nói về tên của mô hình của bạn, nhưng tên 'Mô hình'. Tôi đã cố gắng tạo mô hình như sau: đường ray g Tên sản phẩm mẫu: chuỗi và nhận: Không thể tìm thấy Mô hình máy phát. vì vậy tôi đã thử nó như thế này: đường ray g mô hình sản phẩm tiêu đề: chuỗi và nó hoạt động. –

+1

Ah. Đã không gặp phải b4 đó. Mẹo tốt! – Meltemi

0

Tôi gặp vấn đề tương tự, nhưng mã của tôi hơi khác một chú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 %>

Đó 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 nó ra.

Cuối cùng, chỉ cần thêm url: { projects: :create } sau <%= form-for @project làm việc cho tôi.

+0

Đây có thể là câu trả lời hay nhưng tôi không chắc nó liên quan như thế nào với OP là về các kiểu trường (': integer',': string', etc…). – Meltemi

Các vấn đề liên quan