【问题标题】:Rails Paperclip copy image with hash from one model to anotherRails Paperclip 将带有哈希的图像从一个模型复制到另一个模型
【发布时间】:2017-05-12 22:25:32
【问题描述】:

我想将我的图像从一个模型迁移到另一个模型。 我的旧模型看起来像:

class Post < ActiveRecord::Base

     has_attached_file :logo,
                  url: '/test/post/logo',
                  path: ':rails_root/uploads/test/post/:id/logo/:hash',
                  hash_secret: 'secret',
                  styles: { thumb: ['200x150>', :jpg], medium: ['320x240>', :jpg], large: ['480x360>', :jpg] }
end

新模型看起来像旧模型。

目前我尝试使用以下代码 sn-p 迁移图像:

new_logo = post.logo
new_image.logo = new_logo
new_image.save

但不幸的是它不起作用。我收到以下错误:

没有这样的文件或目录@rb_sysopen - /abcde/fghjk/test/post/1/logo/43023e427c1deb69789bbf7b75cf32810fbb6354

当我在目录中搜索哈希时,它与某些哈希不匹配。

如果没有散列,它会像一个魅力一样工作,但我需要一个带有散列附件的解决方案。

有人想解决我的问题吗?

【问题讨论】:

  • 是的,尝试过这种方式并认为它应该可以工作,因为我收到了上述错误。
  • 也许您保存了旧图像并定义了路径,这与现在不同?
  • 旧图像在预期的路径中,但是迁移过程中的哈希计算不正确,我不知道为什么..除了哈希,整个路径都是正确的
  • 你能把你提到的新模型的代码显示出来吗?

标签: ruby-on-rails ruby migration paperclip


【解决方案1】:

您可以使用 .path 读取文件,然后分配文件对象:

new_image.logo = File.open(post.logo.path)
new_image.save

【讨论】:

  • 我试过了,但奇怪的是路径中计算的哈希值与现有的不匹配..
  • 你确定文件在它应该在的位置吗? url 配置设置为 "url: '/test/post/logo'" 没有哈希,看起来路径配置不应该有 :hash 或者你必须将 :hash 通配符添加到 url 配置中跨度>
  • 另外,url 没有 :id 通配符!
  • 哈希会自动添加到路径中。如果我尝试通过自建绝对路径访问徽标,则会收到以下错误:'源序列是非法/格式错误的 utf-8' 是的,我确定该文件位于我认为的位置。我可以肯定地将 :hash 添加到路径配置中,但这将产生与上述相同的结果。
猜你喜欢
  • 2016-04-20
  • 2011-08-11
  • 1970-01-01
  • 2013-11-20
  • 1970-01-01
  • 2018-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多