2011-11-30 50 views
8

Tôi đang bắt đầu bây giờ trên Rails, tôi đã xem trong diễn đàn, nhưng tôi không tìm thấy bất cứ điều gì có thể giải quyết vấn đề của tôi. Ở đây nó đi, tôi có một bảng thể loại, và nó chỉ có tên cho một cột (không có sự lặp lại trong các thể loại) vì vậy tôi muốn tên là khóa chính, sau đó tôi có một bảng sản phẩm có tên , main_photo, mô tả và tôi muốn nói rằng một sản phẩm chỉ có một thể loại, tôi cần phải thêm một cột có tên là thể loại như một khóa ngoại trong sản phẩm?Cần tạo khóa ngoài khi tạo bảng trên Rails?

Danh mục được cho là có nhiều sản phẩm.

Sau đó, trong các mô hình danh mục, làm thế nào để tôi nói tên đó là khóa chính, và làm cách nào tôi có thể trao đổi thư từ giữa tên khóa chính trong danh mục và danh mục trong sản phẩm?

Trả lời

15

Ràng buộc khóa ngoài trong Bản ghi hoạt động không được sử dụng thường xuyên như ý thức hệ đằng sau Bản ghi hoạt động nói rằng loại logic này nên thuộc về mô hình chứ không phải trong cơ sở dữ liệu - cơ sở dữ liệu chỉ là một cửa hàng câm: http://guides.rubyonrails.org/migrations.html#active-record-and-referential-integrity.

Cách Rails là có cột ID trên tất cả các bảng bao gồm bảng Danh mục của bạn và trong bảng Sản phẩm của bạn, có cột có tên Category_ID. Lưu ý rằng các tên bảng là số nhiều.

Sau đó, trong mô hình của bạn, bạn xác định mối quan hệ giữa các thực thể Sản phẩm và Danh mục. Đọc bài viết A Guide to Active Record Associations và nó sẽ trả lời tất cả các câu hỏi của bạn, đặc biệt là các phần 2.1, 2.2 và 3.3.

+0

Nhưng khi tôi làm đường ray tạo giàn giáo Tên danh mục: chuỗi, không phải nó tạo cột id theo mặc định? bảng của tôi sẽ có một id và một cột tên .. –

+1

Có, nó sẽ thêm cột ID vào mỗi bảng. Nhưng nó sẽ không thêm cột Category_ID vào bảng Products, bạn sẽ phải làm điều đó theo cách thủ công. – link664

+1

Đọc qua liên kết tôi đăng trong câu trả lời của tôi, tất cả các câu trả lời cho câu hỏi của bạn đều có. – link664

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