2010-04-29 51 views
7

在我的應用程序上,我使用paperclip在它們上面有幾個附件。rails + paperclip:通用的「附件」模型是一個好主意嗎?

  • 客戶有一個標誌。
  • 商店可以有一個或多個圖片。另外,這些圖片還可以具有其他信息,例如拍攝日期。
  • 產品可以有一個或多個圖片,分類(從字體, 背面等)。

現在,我的模型中的每一個都有自己的「回形針場」(客戶has_attached_file),或具有附加的has_many模型文件(存儲的has_many StorePictures,產品的has_many ProductPictures)

我的客戶也告訴我說,將來我們可能會在系統中添加更多附件(即客戶下載的pdf文檔)。

我的應用程序有一個相當複雜的授權系統,使用declarative_authorization實現。例如,不能從他不允許'看見'的產品下載圖片。

我在考慮重新考慮我的代碼,所以我可以有一個通用的「附件」模型。所以任何型號都可以has_many :attachments

在這種情況下,它聽起來像一個好主意嗎?還是應該繼續製作Foos和FooPictures?

回答

5

我發現通常情況下,通用Attachment類比各種其他類型的記錄上的獨立附件更易於管理。簡單附件方法的唯一缺點是需要生成的縮略圖是針對所有可能的附件同時定義的,而不是基於具體情況。

混合方法,其允許更大的靈活性是通過包括「類型」列和作出具體的用子類,如ProductAttachment定義特定樣式來創建基於STI-附件表。

+0

感謝您的回答。我終於沒有重構,因爲在某些地方需要額外的字段。做STI會在那裏幫助,但涉及的工作不值得。 – kikito 2010-05-03 21:18:45

相關問題