rails + paperclip:通用的"附件"模型是个好主意吗?

kik*_*ito 7 ruby-on-rails paperclip

在我的应用程序中,我使用回形针有几个带有附件的东西.

  • 客户有一个徽标.
  • 商店可以有一张或多张图片.此外,这些图片还可以包含其他信息,例如拍摄日期.
  • 产品可以有一个或多个图片,分类(从字体,从背面等).

目前,我的每个模型都有自己的"paperclip-fields"(Client has_attached_file)或has_many模型,附带文件(Store has_many StorePictures,Product has_many ProductPictures)

我的客户还告诉我,将来我们可能会在系统中添加更多附件(即客户下载的pdf文档).

我的应用程序有一个使用declarative_authorization实现的相当复杂的授权系统.例如,人们无法从他不允许"看到"的产品中下载图片.

我正在考虑重新分解我的代码,所以我可以有一个通用的"附件"模型.所以任何模型都可以has_many :attachments.

有了这个背景,这听起来是个好主意吗?或者我应该继续制作Foos和FooPictures吗?

tad*_*man 5

我发现通常情况下,通用附件类比各种其他类型的记录上的独立附件更容易管理.简单附件方法的唯一缺点是需要生成的缩略图是为所有可能的附件同时定义的,而不是根据具体情况定义的.

允许更大灵活性的混合方法是创建基于STI的附件表,方法是包含"类型"列并创建特定于用途的子类,例如定义特定样式的ProductAttachment.