CarrierWave 与 ActiveResource

2023-12-28

有人对将 CarrierWave 与 ActiveResource 模型(在 Rails 3 中)一起使用有任何见解吗?我有一个包含文件名字段的 ActiveResource 模型,我想将文件保存到远程文件系统。

我尝试了一些事情,但没有取得太大成功(或者确信我在远程正确地做了任何事情),所以我很感激任何成功实现 CarrierWave 而不使用 gem 中已经包含的 ORM 模块的人的建议。


我可能迟到了,因为原作者已经继续前进,但是当有人搜索“载波活动资源”时,这个问题出现在顶部,所以我认为它仍然值得回答。

为了便于讨论,我们假设我们有一个名为 Artist 的模型,其中有一张名为artist_picture 的图片作为 CarrierWave 上传器安装。使用 ActiveRecord,您可以将此图片分配给一个文件:

artist.artist_picture=File.open('ravello.jpg')

当您保存艺术家时:

artist.save!

图片也将被保存。

现在,假设我基于此创建一个资源:

class Artist < ActiveResource::Base
end

如果我随后读到一位艺术家:

artist = Artist.find(1)

看看它,我会在那里找到这个:

#<Artist:0x39432039 @attributes={"id"=>1, "name"=>"Ravello", "artist_picture"=>#<ArtistPicture:0x282347249243 @attributes={"url"=>"/uploads/artists/artist_picture/1/ravello.jpg"}, @prefix_options={}, @persisted=false>, @prefix_options={}, @persisted=false>

有趣的是,artist_picture 本身就是一个模型,如果我们愿意,我们可以声明它并使用它。事实上,如果需要,您可以使用 url 来抓取图片。但我们来谈谈上传另一张图片。

我们可以将这一点代码添加到服务器端的 Artist 模型中:

  def artist_picture_as_base64=(picsource)
    tmpfile = Tempfile.new(['artist','.jpg'], Rails.root.join('tmp'), :encoding => 'BINARY')
    begin
      tmpfile.write(Base64.decode64(picsource.force_encoding("BINARY")))
      file = CarrierWave::SanitizedFile.new(tmpfile)
      file.content_type = 'image/jpg'
      self.artist_picture = file
    ensure
      tmpfile.close!
    end
  end

我只是展示一个简单的示例 - 您可能还应该传递原始文件名。无论如何,在资源方面:

class Artist < ActiveResource::Base
  def artist_picture=(filename)
    self.artist_picture_as_base64=Base64.encode64(File.read(filename))
  end
end

此时,在资源端,您只需将“artist_picture”设置为文件名,并在保存资源时对其进行编码和发送。在服务器端,文件将被解码并保存。想必你可以通过强制字符串进行二进制编码来跳过base64编码,但是当我这样做时它会很糟糕,而且我没有耐心去追踪它。编码为 base64 有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CarrierWave 与 ActiveResource 的相关文章

随机推荐

  • 如何在 UINavigationBar 自定义 titleView 中使用自动布局

    In WWDC 2017 演讲 204 https developer apple com videos play wwdc2017 204 他们说您可以在自定义 titleView 中使用自动布局 事情发生在7点53分左右 他们从未展示如
  • java中的do while循环只执行一次指令

    在java中 我们如何在do while循环中只执行一次指令 do int param execute this onty one time depends of param other instructions instructions
  • Elasticsearch 分析百分比

    我正在使用 Elasticsearch 1 7 3 来积累分析报告的数据 我有一个保存文档的索引 其中每个文档都有一个名为 持续时间 的数字字段 请求花费了多少毫秒 和一个名为 组件 的字符串字段 可以有许多具有相同组件名称的文档 Eg c
  • jQuery element.closest(...).attr 在使用each时不是一个函数

    当迭代某些 DOM 元素时 我发现无法在它们上使用 data 或 attr running each index element gt console log element closest data id gets me section
  • 将协作者添加到分叉的私人存储库

    我有免费的 GitHub 帐户并分叉了一个私人仓库 现在我想将协作者添加到我的分支中 但 设置 页面下没有 协作者 选项卡 免费计划不提供此功能吗 这可能是由于您分叉了一个private回购 因此 只有您分叉的原始存储库的所有者可以与其他用
  • 如何在 Linux 内核中将 __u32 转换为 __be32

    我有一个变量 be32 x 我有一个功能 u32 foo void u32 a return a 我需要将 foo 的返回值存储在变量中x x htonl foo 这是对的吗 我很困惑什么是返回类型ntohl and htonl 他们是相反
  • 私有继承和隐式转换

    我有一个私有继承的类std string 并增加了一些功能 我希望能够像这样使用这个类std string 所以我试图定义一个隐式转换运算符 operator string 然而 我不断得到inaccessible base error i
  • ConfigurationManager 是否可以与 ASP.NET core 的 appsettings.json 一起使用?

    我有一个 NET Standard 库 其中包含所有与 SQL 相关的代码 它甚至包含一些创建 SQL 连接的代码 该库需要从应用程序配置文件中读取以获取 SQL 连接字符串 图书馆正在使用典型的ConfigurationManager C
  • 如何使引导模式从底部淡入?

    如何使模态从底部到顶部淡入 默认情况下 它从页面顶部开始 我想把它放在页脚中 有专门的类吗 我修改CSS 这个怎么做 div class modal fade bs example modal lg div class modal dial
  • iOS6 上 MapKit 的性能问题

    更新到 iOS 6 后 我注意到平移或缩放具有多个叠加层的 MKMapView 时 服务器性能会下降 我创建的一个应用程序有大约 600 个各种颜色的多边形覆盖 并且在 iOS 5 上运行无延迟 即使在较旧的 iOS 设备上 现在在 iOS
  • 在 Matlab 中创建相关图

    I m trying to emulate this graph 如果我有一个相关矩阵 如何创建这样的输出 如果你有一个n x n相关矩阵M 和一个向量L长度n包含每个垃圾箱的标签 您可以使用如下所示的内容 imagesc M plot t
  • pandas 中的运行总和(无循环)

    我想在 pandas 数据帧上建立一个运行总和 我有类似的东西 10 10 2012 50 0 10 11 2012 10 90 10 12 2012 100 5 我想得到 10 10 2012 50 0 10 11 2012 40 90
  • 如何在gnuplot中分割密钥?

    我已经在 gnuplot 中绘制了这张表 正如您所看到的 密钥应该分为两部分 前 4 个键应保留在原来的位置 但其余 4 个键应向下移动 以免与数据交叉 我怎样才能以这种方式分割密钥 一个plot只支持一个key 所以不能拆分 此外 所有数
  • 断言在 python 中使用 json 字符串调用的模拟函数

    用 python 编写一些单元测试 并使用 MagicMock 模拟一个接受 JSON 字符串作为输入的方法 在我的单元测试中 我想断言它是用给定的参数调用的 但是我遇到了断言语句的问题 因为除了字符串的断言语句之外 字典中对象的顺序并不重
  • 如何手动将具有固定纵横比的视口安装到其父级中,这样就不会像 ggplot 那样浪费空间?

    我有一个视口 它必须具有固定的纵横比 因为它的本机坐标系中的 x 和 y 单位之间的距离必须相等 我想将此视口放入父视口中 以便它能够最大程度地缩放 但保持其纵横比 使用网格单元 snpc 我能够保持纵横比 尽管我无法达到最大程度 请参阅下
  • ASP.NET 应用程序的国际化

    你们如何处理 ASP NET 应用程序的翻译 国际化 您如何与翻译人员合作 我们有需要提供德语 法语 意大利语 英语版本的 ASP NET 应用程序 我们到处都使用字符串资源 然而 我们的翻译人员不止一次告诉我们 只得到一堆 txtMyTe
  • Python Pandas:平衡不平衡的数据集(用于面板分析)

    我知道这可能很容易做到 我可以在 Stata 中完成 但我正在尝试转向 Python 我有一个很大的数据集 它不平衡 它看起来像这样 我需要获取如下数据集 欢迎任何指导 多谢 一种方法是将 年份 设置为另一级索引set index rein
  • 帮助将 libical 等库安装到 Xcode 中

    我想在我的项目中使用 libical 库 但我以前从未使用过外部库 我已经下载了 libical 文件 但我几乎卡在那里 我不知道如何 或者即使 我需要构建 提取它们 然后如何将它们放入 Xcode 任何帮助将不胜感激 谢谢 如果这是一个预
  • ASP.NET 5 HTML5 历史

    我正在将我的项目升级到 ASPNET5 我的应用程序是一个 AngularJS Web 应用程序 它使用 HTML5 Url 路由 HTML5 历史 API https developer mozilla org en US docs We
  • CarrierWave 与 ActiveResource

    有人对将 CarrierWave 与 ActiveResource 模型 在 Rails 3 中 一起使用有任何见解吗 我有一个包含文件名字段的 ActiveResource 模型 我想将文件保存到远程文件系统 我尝试了一些事情 但没有取得