在我正在构建的网站的CMS中,我正在使用Paperclip来处理文件上传。用户可以上传图像,并且必须为每个图像提供简要描述,然后将其用于命名图像(用于SEO)和图像的alt标记。每个Image都调整为大量预定义大小并存储在S3上。
用户可以在多个地方使用此图像,有效地创建多种不同类型的模型,每种模型都指特定的图像。
因此,我需要存储有关图像的元数据(其描述),并且我需要在多个模型之间共享单个图像,将图像封装在自己的模型中似乎是有意义的,然后可以在任何需要它的模型上添加为关联。然后Image
模型具有Paperclip的附件。这意味着我不需要在任何引用图像的模型上存储重复信息。
我担心的是表现。现在,任何图像请求都不需要直接作为属性访问URL,而是需要通过Image
模型。
这是一个明智的解决方案,还是应该以不同的方式解决这个问题?
答案 0 :(得分:5)
你正在考虑它是完全正确的。您想要Rails Polymorphic Associations, documented here.实际上,图像是示例中使用的用例。
任何性能差异都可以忽略不计,并且可能比你手动推出其他解决方案更好。