我有一个应用程序,允许用户发布带有照片的文章。文章有很多照片,每张照片只属于一篇文章。
文章中的照片位于照片表中。这些照片通过carrierwave + fog上传到S3。
为了使这个功能有效,我有一系列以它命名的文件。例如,照片控制器,照片模型,照片视图和Photos.coffee可显示预览。
现在我想添加一项允许用户上传头像的功能。我应该将头像和文章的照片存储在一个数据库表中吗? (照片)或使用另一张桌子作为头像?
如果我使用同一个表,则行将具有空值。例如,将填写article_id,而user_id对于属于文章的照片将为空。对于头像,article_id将为空白,user_id将具有相应用户的ID。
如果我使用不同的表格,我想我必须重写照片控制器,照片模型和照片视图,因为现在该表格适用于头像。有没有更好的方法来重写用户头像的文章照片上传器?
让我知道您认为我应该如何解决这个问题。感谢。
答案 0 :(得分:0)
如果用户只有一个头像,我会将头像添加到用户表,但如果您想保存多个(例如头像历史记录),最好将其放在另一个表中。您可以随时使用polymorphic-associations来修复article_id
和user_id
答案 1 :(得分:0)
如果头像与文章相关,那么我会把它放在文章表上。如果化身与用户有关,我会像@Argonus提到的那样做。我不会把头像放在照片表中。它没有意义。
我假设您的照片控制器,视图和模型仅处理图像/照片特定功能。由于头像是图像,您仍然可以使用照片控制器和视图,并为不同的图像类型使用不同的模型。在这种情况下,您将拥有两个模型,即照片模型和头像模型。
最后,在给定视图上下文的模型之间切换。