Rails + Paperclip:通用的“附件”模型是一个好主意吗?

7
在我的应用程序中,我使用paperclip来附加多个项目的附件。
  • 客户有一个徽标。
  • 店铺可以有一张或多张图片。此外,这些图片还可以包括其他信息,例如拍摄日期。
  • 产品可以有一张或多张图片,分类(从字体、从背面等)。
目前,我的每个模型都有自己的“paperclip-fields”(Client has_attached_file)或有许多具有附加文件的models(Store has_many StorePictures,Product has_many ProductPictures)。
我的客户还告诉我,将来我们可能会向系统添加更多的附件(例如,供客户下载的PDF文档)。
我的应用程序实现了一个相当复杂的授权系统,使用declarative_authorization。例如,一个人不能从他没有权限“查看”的产品中下载图片。
因此,我正在考虑重构我的代码,以便我可以拥有一个通用的“Attachment”model。所以任何模型都可以has_many:attachments
在这个背景下,这个想法听起来是否好?还是我应该继续制作Foos和FooPictures?
1个回答

5
我发现,在各种记录中,通用的附件类比独立的附件更容易管理。采用简单的附件方法的唯一缺点是需要同时为所有可能的附件定义缩略图,而不能逐个处理。
一种混合方法可以提供更大的灵活性,即创建基于STI的附件表,其中包括一个“类型”列,并使用特定的子类,例如ProductAttachment来定义特定的样式。

谢谢你的回答。最终我决定不进行重构,因为有些地方需要额外的字段。使用STI可能会有所帮助,但涉及到的工作量实在不值得。 - kikito

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接