2010-10-12 32 views
48

Tôi đã tìm thấy một số câu hỏi về SO liên quan đến Rails có phần giống như câu hỏi của tôi, nhưng đối với cuộc sống của tôi tôi dường như không hiểu cách sử dụng belongs_to nhiều mô hình.Rails thuộc nhiều mô hình

Dưới đây là cấu trúc bảng tôi dự định sẽ có:

User 
id 

Post 
id 
user_id #foreign key; a post belongs to a User aka "Who created this post" 

Comment 
id 
user_id #foreign key; a comment belongs to a User aka "Who made this comment" 
post_id #foreign key; a comment belongs to a Post aka "What post this comment is for" 

hiệp hội:

User 
has_many :posts 
has_many :comments 

Post 
belongs_to :user 
has_many :comments 

Comment 
belongs_to :user 
belongs_to :post 

Đây có phải là cách tiếp cận đúng?

+0

Làm cách nào để bạn tiếp tục thực hiện lưu nhận xét? –

+0

omg, nó đã được 7 năm kể từ khi tôi học được đường ray (cảm ơn bạn SO!). Để trả lời câu hỏi của bạn @MosesNdeda, bạn sẽ khởi tạo một chú thích, gán cho người dùng và gửi các đối tượng, sau đó gọi 'save' trên đối tượng Comment. – Zabba

Trả lời

52

Có đó là cách tiếp cận chính xác.

+0

Điều này đòi hỏi một bảng tham gia hoặc bất cứ điều gì ... hoặc nó sẽ làm việc như mong đợi với những gì ông đã chỉ ra? – Andrew

+4

Đây là một trong nhiều mối quan hệ (một người dùng có nhiều bài đăng, v.v.), do đó không. Bảng bình luận sẽ giống như thế này: id user_id post_id và nội dung ofc hoặc bất cứ thứ gì. – Maxem

+0

bạn có thể gõ has_many: posts,: comments – Vasseurth

8

Mặc dù không phải lúc nào cũng là cách tiếp cận "tốt nhất", đường ray cung cấp cái gọi là liên kết thuộc tính đa hình. Nó ngăn cản bạn định nghĩa khóa ngoài trong cơ sở dữ liệu vì cột xxx_id đang tham chiếu một id trong một trong nhiều bảng có thể trong khi cột khác chỉ định tên của mô hình bảng đó, nhưng nó làm cho mối quan hệ rõ ràng hơn trong đường ray. Ngoài ra, nó hạn chế mô hình chỉ thuộc về một trong các mô hình khác, trái ngược với thuộc một hoặc nhiều, vì nó sẽ xảy ra khi thiết lập nhiều khóa ngoài mà không cần thêm một số phép thuật db.

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