【问题标题】:ROR/Mysql Design question: how to store avatars in databaseROR/Mysql 设计问题:如何在数据库中存储头像
【发布时间】:2011-08-28 08:09:02
【问题描述】:

我正在创建一个 Ruby on Rails 网站。用户可以从我提供的一组有限的头像中获得头像,例如 turntable.fm。再次像 Turntable.fm 一样,根据使用等级,他们可以从不同级别选择不同的头像。

我正在考虑用脚手架创建头像,所以有一个 MVC。

rails generate scaffold avatar file_name:string, level:integer

(对于非 ruby​​ 专家;))所以我的头像 mysql 表将具有 id、file_name 和 level 作为它的列。

并将 avatar_id 添加到 User 表中。

我想知道这是解决此问题的正确方法吗? 我只是在阅读有关 BLOB 并将图像存储在数据库中的信息,我需要这样做吗?

谢谢! 米娜

【问题讨论】:

  • 关于在数据库中存储图像有几个问题;普遍的共识是“除非迫不得已,否则不要这样做”。

标签: mysql ruby-on-rails database-design


【解决方案1】:

这取决于你有多少头像图片,如果不是几万或更多,按照你建议的方式做应该可以,否则请确保你阅读this question

然后另一个问题是,您是否希望它具有未来的证明,以防万一需求发生重大变化,例如为了支持自定义头像。在这种情况下,您可能需要在表中添加更多内容,例如文件将保存到的目录的路径。

您是否需要file_name 列也是有争议的,您也可以使用avatar_id 作为文件名。也许您需要为头像命名/标签,但不需要这样命名文件,最好不要实际这样做(在这里考虑 i18n,特殊字符,但不仅如此)

然后如前所述,如果您认为文件有任何优势,您可以尝试将文件本身保存在数据库中(我自己不会这样做,但有有效的专业论据可以这样做,请参阅@987654322 @讨论该主题)

【讨论】:

    【解决方案2】:

    使用carrierwave。它使用起来非常简单,而且功能非常强大。

    【讨论】:

    • 我的意思是围绕现有的头像进行设计,所以我们不想让用户“上传”他们自己的图像。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 2011-09-27
    • 1970-01-01
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多