2010-11-07 37 views
17

Tôi đã định cấu hình cơ sở dữ liệu mysql của mình để trỏ đến cơ sở dữ liệu mysql hiện có của mìnhray 3: cách tạo mô hình cho các bảng cơ sở dữ liệu hiện có

làm cách nào để tạo mô hình?

rails generate model existing_table_name 

chỉ đưa ra một mô hình Emty ..

+0

cung cấp cho bạn mô hình trống? điều đó nghĩa là gì? Bạn đang cố làm gì vậy? :) – s84

+0

tôi mong đợi nó có chứa tất cả các lĩnh vực và quan hệ của bảng đó, nhưng tất cả tôi nhận được là một lớp học trống có nguồn gốc từ ActiveRecord :: Base –

+0

những gì bạn đang làm là không thể trừ khi bạn tạo kịch bản của riêng bạn. – s84

Trả lời

9

Một Rails mô hình không hiển thị các lĩnh vực của bạn, nhưng bạn vẫn có thể sử dụng chúng. Hãy thử những điều sau đây. Giả sử bạn có một mô hình tên ModelName và một lĩnh vực được gọi là "tên", cháy lên các Rails console và gõ:

ModelName.find_by_name('foo') 

Cho một cái tên đó tồn tại trong DB, bạn sẽ thấy kết quả.

Đường ray không phỏng đoán mối quan hệ, nhưng nếu cơ sở dữ liệu của bạn tuân theo quy ước của Rails, chúng dễ dàng được thêm vào.

Cập nhật

tôi đã nhận thấy thiếu đặc biệt này của minh bạch ("ma thuật") là một nguồn gây nhầm lẫn cho người mới đến Rails. Bạn luôn có thể xem schema.rb để xem các mô hình và tất cả các trường ở một nơi. Ngoài ra, nếu bạn muốn xem lược đồ cho từng mô hình trong tệp mô hình, bạn có thể sử dụng đá quý annotate_models, sẽ đặt lược đồ db trong nhận xét ở đầu tệp mô hình.

+0

Wow, cảm ơn tôi không bao giờ biết điều này có thể xảy ra! ehhe. Tôi học một cái gì đó mới ngày hôm nay. –

+0

Các mô hình đường ray được tạo hiển thị các trường của bạn trong cuộc gọi attr_accessible. – holaSenor

1

ActiveRecord không phân tích cú pháp định nghĩa lược đồ. Nó yêu cầu DBM cho bảng defs và con số ra các lĩnh vực trên bay.

Việc tạo lược đồ rất hữu ích nếu bạn định sửa đổi các bảng thông qua di chuyển. Schema Dumping and You sẽ giúp bạn đổ nó để sử dụng làm tài liệu tham khảo để xây dựng di chuyển.

ActiveRecord thực hiện một số giả định về đặt tên bảng và mong đợi trường id làm khóa chính với số thứ tự là loại. Việc di chuyển sẽ giúp bạn cấu trúc lại các bảng và/hoặc các tên và các kiểu, nhưng bạn có thể thực hiện những điều tương tự đó thông qua dòng lệnh DBM của bạn. Bạn không thực sự phải theo phong cách của ActiveRecord nhưng làm như vậy sẽ giúp tránh được những lỗi lạ và cho phép AR suy ra những điều để làm cho cuộc sống của bạn dễ dàng hơn.

1

Có thể thử Magic Model Generator

+1

Lưu ý: Dành cho Rails 2, không có sẵn Rails 3. –

+3

Có ai biết về bất kỳ phương pháp thay thế nào tạo mô hình với các mối quan hệ, v.v ... từ lược đồ hiện có trong Rails 3 không? – Arosboro

15

Bạn có thể thử Rmre. Nó có thể tạo ra các mô hình cho lược đồ hiện có và nó cố gắng tạo tất cả các mối quan hệ dựa trên thông tin khóa ngoài.

+0

Tôi đã thử Rmre nhưng nó chỉ tạo ra các mối quan hệ giữa các mô hình (ví dụ: has_many, depends_to). Nó không tạo ra các thuộc tính mô hình. – Nick

3

câu trả lời của bạn là:

$ rake db:schema:dump 

đó sẽ thiết lập một mới db/schema.db để tạo ra một sơ đồ của DB của bạn.

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