【问题标题】:Rails-RMagick handle single imageRails-RMagick 处理单张图片
【发布时间】:2013-05-13 13:23:21
【问题描述】:

我正在构建一个 Rails 应用程序,用户在其中上传图像,然后将其发送到 rmagick 进行修改,然后进行渲染。由于用户只处理一张图像,我最初认为我可以将其存储在内存中而不是数据库中,但这似乎不可行。模型名称是 AppImage,所以我想在渲染之前显示 AppImage.last 并删除所有以前的 AppImage,但我想知道这是否会导致多个用户出现问题。

最好的解决方案是让每个用户根据他们的 IP 获取用户配置文件,并且每个用户有一个 AppImage?我应该考虑会话哈希吗?

编辑:我目前正在使用回形针,但不确定如何构建程序。

【问题讨论】:

  • 为什么不使用回形针 (github.com/thoughtbot/paperclip)、carrierwave (github.com/jnicklas/carrierwave) 或蜻蜓 (github.com/markevans/dragonfly) 来上传图片?这真的很容易,你不能自己编写所有代码..
  • 抱歉不清楚,我目前正在使用回形针,但我正在将图像保存到数据库中,当我只需要一张图像时,我不确定如何管理数据库每个用户/会话。
  • 您还应该更新您的问题名称 - Rails-RMagick 处理单个图像 -> 也许 Rails-Paperclip 而不是 Rails-RMagick 会更好..

标签: ruby-on-rails


【解决方案1】:

如果用户上传图片,您可以将会话变量设置为 true,并检查您的上传控制器是否设置了会话变量。取决于您是否允许用户上传图片。您可以将会话存储设置为 db,进一步您可以定义会话保存多长时间的范围。

控制器:

def new
  @upload = YourUploadModel.new
  session[:image_uploaded] ||= true
end

def create
  if session[:image_uploaded] && session[:image_uploaded] == true
    redirect_to root_path, :notice => "Already uploaded an image today!"
  else
    # create your upload..
  end
end

app/config/initializers/session_store.rb:

# Use the database for sessions instead of the cookie-based default,
# which shouldn't be used to store highly confidential information
# (create the session table with "rails generate session_migration")
YourAppname::Application.config.session_store :active_record_store, {
  expire_after: 1.days
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    • 2017-03-14
    • 1970-01-01
    相关资源
    最近更新 更多