2008-11-02 35 views
5

Trong ứng dụng Rails của tôi, tôi có ba mô hình, Dự án, BlogPost và Hình ảnh. Các dự án và BlogPost có thể có nhiều hình ảnh được liên kết và một hình ảnh có thể được liên kết với một Dự án, một BlogPost hoặc cả hai.Hội Rails, habtm? Đa hình? Cả hai?

Cách tốt nhất để thiết lập các liên kết để thực hiện công việc này trong Rails là gì?

Trả lời

9

Tôi sẽ trêu ghẹo đồ đạc vào một lớp mô hình riêng biệt, ImageLink. Sau đó, bạn sẽ nhận được:

Project 
    has_many :image_links, :as => :resource 
BlogPost 
    has_many :image_links, :as => :resource 
ImageLink 
    belongs_to :image 
    belongs_to :resource, :polymorphic => true 
Image: 
    has_many :image_links 
+2

Đây thực sự không phải là một "khoe khoang", bởi vì nó thực sự giống như một bản đồ (với ImageLink như bảng habtm), nhưng lợi thế của phương pháp này là bạn kết hợp hai habtms thành một. –

+2

Cảm ơn, tôi đã thêm has_many: thông qua các liên kết đến quá trình này, việc tìm kiếm trong quá trình không hoạt động từ phía Hình ảnh của mọi thứ, nhưng trong trường hợp này không quan trọng vì tôi chỉ muốn có Hình ảnh được liên kết với Dự án thay vì so với cách khác. – philnash

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