如何制作自定义载波后处理器?

2024-02-23

我需要对不是图像的文件上传进行一些后期处理 - 在回形针中我可以有一个自定义后处理器,但我找不到任何方法在 Carrierwave 中执行此操作。

Ruby 1.9.3、Rails 3.2.7 和 CarrierWave 0.6.2。


OP的问题是如何处理非图像文件。

请查看 GitHub 上的源文件:载波/lib/载波/uploader/processing.rb https://github.com/carrierwaveuploader/carrierwave/blob/c2ee2e89d3aa447c6b81186be6d627202d33a97f/lib/carrierwave/uploader/processing.rb并检查评论。

您将创建自己的 CarrierWave 上传器子类并将其安装到您的模型中,如下所示:

  def MyModel < ActiveRecord::Base

    # this is where the uploaded file will be available in your model,
    # as a `MyUploader` instance:
    #
    mount_uploader :uploaded_file, MyUploader

    ... 
  end

请注意,它安装在 ActiveRecord 属性上:uploaded_file。 这意味着当您访问:uploaded_file从您的模型中,您将获得已上传的特定文件的 CarrierWave 上传器的实例。

您可以简单地在上传器中定义处理,如下所示:

  class MyUploader < CarrierWave:Uploader::Base
    process :my_custom_processing => [param1,param2,param3]

    def my_custom_processing(param1,param2,param3)
      ...
      # e.g. you could call a method which is defined elsewhere,
      # which operates on a file:
      my_nifty_file_processor( self.uploaded_file ) 
      #
      # or you could just do this directly:
      uploaded_data = self.uploaded_file.read
      ...
    end
  end

Inside my_nifty_file_processor,你只需调用read在传入以读取文件的对象上。

CarrierWave 让您可以打电话read在任何上传器实例(=上传文件的任何实例)上,它将读取该文件。

还有一提示:

有时,您需要访问上传器中的 ActiveRecord 模型(为其上传文件)。

只需在您的上传器代码中访问它,如下所示:

      self.model

这使您可以将有关上传文件的附加信息(例如格式)直接存储在 AR 模型中。

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

如何制作自定义载波后处理器? 的相关文章

  • 如何在ActiveAdmin中过滤IS NULL?

    我有一个带有名为 map id 的整数列的表 我想添加一个 activeadmin 过滤器来过滤此列是否为 NULL 或 IS NOT NULL 这如何实施 我尝试了以下过滤器 filter map id label gt Assigned
  • 为 Rails 3 应用程序制作自定义插件/gem/引擎

    我正在遵循指南http edgeguides rubyonrails org plugins html http edgeguides rubyonrails org plugins html而且它似乎有点过时了 您能看一下并告诉我哪些部分
  • 我们可以从视图调用控制器的方法(理想情况下我们从助手调用)吗?

    在 Rails MVC 中 您可以从视图调用控制器的方法 因为方法可以从助手调用 如果是 怎么办 答案如下 class MyController lt ApplicationController def my method Lots of
  • 如何在 Ruby on Rails 中读取远程文件的内容?

    这是我的文件 http example com test txt http example com test txt 我必须阅读以下内容http example com test txt http example com test txt
  • 设计如何覆盖 send_confirmation_instructions

    我正在尝试重写方法 send confirmation instructions 如下所示 http trackingrails com posts devise send confirmation mail manually or del
  • 回形针回调还是简单的处理器?

    我想运行回调after post process但它似乎无法在使用 Paperclip 2 3 8 的 Rails 3 0 1 中工作 它给出了一个错误 undefined method post process callbacks for
  • 黄瓜和 Rspec

    任何人都可以向我推荐黄瓜和 rspec 教程 rails 3 的好来源 简单示例 吗 Edit 实际上我正在寻找带有很好示例的免费在线资源 我觉得R规格书 http www pragprog com titles achbd the rsp
  • Rails 3 UJS 干客户端 + 服务器端表单验证

    使用 jQuery 进行表单验证就像向字段添加类名一样简单 使用 Rails 进行表单验证就像将条件放入控制器 和 或模型 中一样简单 我认为应该有一种方法可以编写一次验证并将它们应用到客户端和服务器端 我一直热衷于编写自己的 javasc
  • Rails——理解 db:migrate

    我在理解 Ruby on Rails 中的迁移时遇到了一些困难 我的应用程序中有以下两个类db migrate 目录 存储在单独的文件中 class CreateUsers lt ActiveRecord Migration def sel
  • Rails 日志太详细

    如何防止 Rails 记录过多日志 这是我的 production log 文件中的典型跟踪 许多部分 缓存命中 它在开发中很有用 但我不希望在我的生产环境中使用它 Started GET redirected true for 46 19
  • 销毁/删除 Rails 中的数据库

    是否可以从现有应用程序中完全删除数据库和所有迁移记录等 以便我可以从头开始重新设计数据库 通过发行rake T您有以下数据库任务 rake db create Create the database from DATABASE URL or
  • 如何将 Devise 的“超时”模块添加到现有的 Devise 安装中? - 轨道 3.1

    这些是将模块添加到现有 Devise 安装的说明 https github com plataformatec devise wiki How To change an already existing table to add devis
  • 防止语言环境文件中的 HTML 字符实体被 Rails3 xss 保护破坏

    我们正在构建一个应用程序 这是我们第一个使用 Rails 3 的应用程序 并且我们必须从一开始就构建 I18n 作为完美主义者 我们希望在我们的视图中使用真正的排版 破折号 卷曲引号 省略号等 这意味着在我们的 locales xx yml
  • 如何在rails3中渲染编辑视图并发布Flash消息

    在我的帐户控制器中 我想在保存更改后显示 渲染 redirect to 编辑视图并显示闪存通知 def update account Account find params id respond to do format if accoun
  • 在私有控制器方法中返回redirect_to

    前言 我正在使用设备进行身份验证 我试图阻止未经授权的用户查看 编辑或更新其他用户的信息 我最关心的是用户将 DOM 中的表单修改为另一个用户的 ID 填写表单 然后单击更新 我已经专门阅读过 像下面这样的东西应该有效 但事实并非如此 SO
  • 为什么“捆绑”会在我的开发机器上安装生产 gem?

    Gemfile 说 gem sqlite3 groups gt development test gem mysql2 group gt production 然而当我打字时bundle install在我的开发机器上安装了所有 gem 我
  • 在 Rails 3 中选择性地关闭 Devise 的 Flash 通知

    Devise 身份验证框架在各处都使用 Flash 通知 这使得与应用程序集成变得很容易 但有时会导致用户体验不佳 我想知道有什么简单的方法可以有选择地关闭 Rails 3 应用程序中的一些 Devise flash 通知 特别是 我想摆脱
  • Rails/Nginx 中的超时——最佳实践

    我正在开发一个应该在 Nginx 服务器上运行的 Rails 应用程序 根据输入 应用程序可能需要很长时间来处理请求 或者在出现错误时挂起 因此我想防止进程永远运行 除了确保客户端收到超时信号的 Nginx 配置之外 我想我可能仍然需要确保
  • 在 Rails 3 中渲染 Markdown 文本

    我想将 markdown 转换为 html 在我看来我有markdown some text variable 但我得到了错误undefined method markdown I added require BlueCoth 到envir
  • 从父应用程序重新打开 Rails 3 引擎类

    就目前而言 您无法重新打开引擎中包含的引擎类 app只需在父应用程序的目录中添加相同的类即可 app目录 例如 my engine app controllers users controller rb my app app control

随机推荐

  • ret2libc 攻击不会生成 shell

    我执行了 ret2libc 一切正常 但 shell 没有生成 源代码是 include
  • JHipster 的正确 Eclipse 设置是什么?

    我在第一次尝试在 STS Eclipse 中编译 jhipster 项目时收到此错误 The type org springframework core NestedRuntimeException cannot be resolved I
  • 如何向 PyPi 分发类型提示?

    我致力于将 Python 3 5 类型提示添加到响应库中 但是当我测试进行分发时 sdist or bdist wheel 它没有安装我的 pyi文件 我可以看到它是发行版的一部分 但仅此而已 您可以在此处查看我在存储库中获得的内容 htt
  • 包含 jQuery $.post() 函数的函数的返回值

    我知道 AJAX 是异步的 等等 但我有以下代码 function doesUsernameExist element Check via AJAX POST if username already exists in the databa
  • 合并 2 个排序列表

    我被要求针对以下问题提出尽可能多的解决方案 编写一个函数 它接受两个数字列表 均假设为 按升序排列 并将它们合并到一个列表中 也在 升序 我的第一个解决方案是append list1 onto list2然后重新sort 然后我发现一个内置
  • Android Mono 中的自定义应用程序子类

    我试图创建一个 Android App Application 的子类来覆盖 OnCreate 但我无法让它工作 这是我的代码 namespace MonoAndroidAcra Application Debuggable true La
  • 如何访问 tcp 标头详细信息?

    就像我创建了套接字并将该套接字绑定到客户端一样 我能够连接两侧并能够发送任意数量的数据 它基本上是 TCP 套接字 我的问题是我想访问 TCP 标头详细信息以检查和设置某种操作的参数 但我无法做到这一点 我正在用户空间中工作 从套接字级别我
  • 如何使用 Mercurial“恢复”未更改的文件?

    我在我的计算机上安装了 Windows7 我必须更改所有权限 取得所有权 这显然 触及 了我的所有文件 现在所有内容似乎都被 修改 当我执行 hg status 时 但只有一些文件有实际更改 是否有一个命令我可以运行 以便我可以 提交 或
  • 如何在 wicket 1.5 中的页面加载时打开模式窗口

    我使用 wicket 1 4 x 一段时间 在这里找到的解决方案效果很好 如何在页面加载时打开模态对话框 https stackoverflow com questions 4765790 how to open modaldialog o
  • 如何在 VBA 中替换范围/选择范围内的 Microsoft Word 字符样式?

    我正在开发一个带有宏的 Word 2007 模板 该宏会将字符样式应用于所选文本 查找 替换功能似乎是一个很好的起点 但我认为我发现了一个错误 限制 导致宏无法按预期工作 这是我的 vba 代码 Sub restyleSelection D
  • 如何检查按钮形状是否启用? [复制]

    这个问题在这里已经有答案了 如何使用 UIAccessibility 检查 iOS 设备辅助功能设置中的 按钮形状 选项是否已启用 我想在定制按钮上支持 按钮样式 我将代码转换为this https stackoverflow com a
  • 我如何使用 Node.js 和 Mongoose 计算总正价、总负价和总和

    我已经编写了获取所有用户记录的查询 exports index function req res Userdata find function err userdatas if err return handleError res err
  • 如何在React Native中使用全局变量?

    在 React Native 中 当我在不同屏幕之间移动时 我想使用全局变量 谁能帮助我如何实现它 React Native 中的全局范围是全局变量 例如global foo foo 那么你可以在任何地方使用 global foo 但不要滥
  • Spring 批处理:在 CompositeItemWriter 中使用 before-step 和 after-step 方法

    我需要从数据库读取数据 然后生成 XLSX 文件并更新数据库中的数据 对于读者部分来说没有问题 对于作家部分 我最终创建了一个CompositeItemWriter 由第一个组成Writer生成 XLSX 文件和更新数据库中数据的第二个文件
  • 我们应该使用 OpenGL 来处理 2D 图形吗?

    如果我们想做一个像MS Paint这样的应用程序 我们应该使用OpenGL来渲染图形吗 我想谈谈使用传统 GDI 与 OpenGL 时的性能 如果有一些更好的库用于此目的 请看我的一个 GDI X11 OpenGL 都是渲染 API 即您通
  • 到底什么是现场注入以及如何避免它?

    我在一些关于 Spring MVC 和 Portlet 的文章中读到场注入不推荐 据我了解 场注入是当你注入一个 Bean 时 Autowired像这样 Component public class MyComponent Autowire
  • 将 Qt GUI 添加到动态库

    问候溢出 我正在尝试向现有项目添加 GUI 更具体地说 对于作为 so文件 或者在 win32 上编译时 dll 该项目已经拥有自己的线程实现来处理可移植性 我知道 Qt 有自己的跨平台线程模型 但最好保留在现有的线程模型中 我对 Qt 老
  • 同时触发if和else的BUG Unity C#

    我在使用最新版本的 Unity 时遇到了一个非常奇怪的错误 IDE 是 Visual Studio 2015 社区 我有一个按钮 单击它时会触发一个函数 并发送一个短字符串作为参数 在该方法中 我首先检查字符串是否为空或空 如果是这种情况
  • 间接修改重载属性Laravel MongoDB

    我将 MongoDB 与 Laravel 一起使用 我有一个名为categories其中有一个文档 id 567dc4b4279871d0068b4568 name Fashion images http example com 1 jpg
  • 如何制作自定义载波后处理器?

    我需要对不是图像的文件上传进行一些后期处理 在回形针中我可以有一个自定义后处理器 但我找不到任何方法在 Carrierwave 中执行此操作 Ruby 1 9 3 Rails 3 2 7 和 CarrierWave 0 6 2 OP的问题是