【问题标题】:Rails: use image for a column in modelRails:将图像用于模型中的列
【发布时间】:2011-09-29 15:51:35
【问题描述】:

我希望用户能够上传图像并将其与特定模型相关联。创建迁移时,我的列使用什么类型?在视图中,我希望它看起来像这样:

<%= form_for @person, :html => {:multipart => true} do |f| %>
<%= f.file_field :picture %>
<% end %>

谢谢大家:)

【问题讨论】:

  • 如果您希望图片随时可用,即它将显示在您网站的页面上,那么您不应将其存储在数据库中。下面有很好的建议。

标签: ruby-on-rails image model upload


【解决方案1】:

可能是:binary -- 但是,您是否考虑过使用Paperclip 之类的东西来为您处理图片上传?否则会变得非常复杂。

【讨论】:

  • 你能解释一下为什么它变得更复杂吗?我要使用的图片是20kb左右
  • 如果你不介意处理验证(以确保不上传坏东西)和处理在数据库中存储二进制数据(而不是服务器或云存储系统),你可以做到。但是像 Paperclip 这样的宝石可以为您提供所需的一切,从而减少工作量。
【解决方案2】:

我建议使用外部插件,例如 PaperclipCarrierwave

【讨论】:

  • +1 用于使用 gem 进行上传。你不想重新发明轮子。我强烈推荐carrierwave上有一个很棒的railscast。 railscasts.com/episodes/253-carrierwave-file-uploads
  • @Benjamin:因为这比自己发明一切要容易。这两个插件都非常支持扩展到多个版本并存储在各种后端(本地文件系统、Amazon S3、MongoDB GridFS 等)而不是数据库中。使用 BLOB 在关系数据库中存储文件通常不是存储大量(大)文件的最佳选择)。
【解决方案3】:

还有AWS-3 gem,如果您只想要云存储。我认为仅凭性能就足以不在数据库中存储图像。

【讨论】:

  • 仔细观察,Rails 3 的 gem 可能不会更新——尽管 fork 可能会。
猜你喜欢
  • 1970-01-01
  • 2013-09-21
  • 2020-04-24
  • 1970-01-01
  • 1970-01-01
  • 2016-05-16
  • 2011-12-05
  • 1970-01-01
  • 2020-04-20
相关资源
最近更新 更多