如何测试载波文件是否更改?

2024-04-04

我正在尝试测试代码中的图像是否随载波更改,但我找不到方法来执行此操作。即使文件无效,对象似乎也被标记为已更改,因此它并未真正更改。

查看以下输出:

(rdb:1) job.translated_xliff
#<XliffUploader:0xcd8b380 ...>
(rdb:1) job.changed?
false # As expected, didn't changed yet
(rdb:1) job.translated_xliff = "foo"
"foo"
(rdb:1) job.changed?
true # Changed? "foo" is not a valid file. Lets see the file again...
(rdb:1) job.translated_xliff
#<XliffUploader:0xcd8b380 ...> # same object ID!

如何检查该对象是否真的在我的代码中发生了更改?

编辑:我打开了一个github 上的问题 https://github.com/carrierwaveuploader/carrierwave/issues/1174#issuecomment-21793365,但是问题还没有解决,还可以在那里找到更多信息


Carrierwave 内部定义(覆盖)ActiveRecordgetter/setter在上传者栏(translated_xliff)

现在每次调用 setter 方法 job.translated xliff = 'for' (如Bensie) 它用ActiveRecord::Dirty _will_change!通知对象发生变化的方法

接下来是 CarrierWave 缓存提供的file

这是你的场景

    job.translated_xliff
    => uploader 

    job.changed?
    => false

    job.translated_xliff = "foo"

    ## Now your trying to change the object so will_change! notify that 
    ##'translated_xliff' is changing after which Carrierwave try to cache the given 'file'(foo)

现在问题就在 Carriewave 开始缓存文件之前,它执行如下基本检查

  new_file = CarrierWave::SanitizedFile.new(new_file)
  unless new_file.empty?
     ## Then  do caching 
  end  

empty?用于确定提供的值(在您的情况下foo) is a Path or File在您的情况下,它不是两个,因此文件永远不会缓存,但对象被标记为changed

因此你得到这个

job.changed?
=> true 

现在结果是在打电话时job.translated_xliff它拉的方法file自提供以来从商店value从未被缓存过,你可以看到它正在运行here https://github.com/carrierwaveuploader/carrierwave/blob/master/lib/carrierwave/mount.rb#L317

因此,我在评论中提到,如果您想实现此类目标,也许您可​​以检查identifier并决定是否改变

job.translated_xliff.identifier == "foo"

只是一个建议:)

希望这有帮助

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

如何测试载波文件是否更改? 的相关文章

  • rvm编译安装ruby 2.5.0出错

    我正在尝试使用 rvm 安装 ruby 2 5 0 但出现错误 我在 Ubuntu 18 16 和现在的 Linux Mint Cinnamon 上尝试过 基本上我在运行安装 ruby 的代码之前所做的是 打开 GPG 密钥https rv
  • 如何覆盖 Ruby Ranges 的 .. 和 ... 运算符以接受 Float::INFINITY?

    我想覆盖 and Ruby 中的运算符Range 原因是 我正在处理数据库中的无限日期范围 如果你拉一个infinty从 Postgres 中取出日期时间 你会得到一个Float INFINITY在红宝石中 问题是 我无法使用Float I
  • 我们能否知道回形针下载何时完成?

    我有一个应用程序 我需要知道用户的 Rails Paperclip 文件下载时间complete 我的应用程序设置为与 Amazon S3 交互 当用户收到完整的文件时 我需要运行 JavaScript 函数 我怎样才能做到这一点 跟踪天气
  • 如何使 Rails 3 资源预编译速度更快?

    我有一个正在运行的 Rails 3 2 1 应用程序 我正在通过 Capistrano 进行部署deploy assets它运行deploy assets precompile task 一切工作都很好 除了编译本身非常慢 我没有那么多 C
  • ApplicationController 的未定义方法“helper_method”,Rails 5

    我正在尝试使用doorkeeper 将oAuth2 0 集成到我的仅rails api 应用程序中 但我不断收到此错误 ApplicationController 的未定义方法 helper method 但无法找到解决该问题的明确解决方案
  • Rails 中的 PDF 导出

    我需要将包含一些图表的 HTML 页面导出为 PDF 有哪些好的 gem 可以做到这一点 PDFKit http railscasts com episodes 220 pdfkit http railscasts com episodes
  • 多态控制器和调用对象

    我的地址具有多态关系 可以由成员或依赖者拥有 一切看起来都很棒 直到我意识到除非我遗漏了一些东西 否则我不知道创建它的对象是什么类型 有没有办法告诉路由文件包含对象的类型 Models class Member lt ActiveRecor
  • Rails 注释分段错误

    有一些问题围绕着这个问题 但没有什么真正能满足我的需求 After I bundle install下面列出了我的 Gemfile 我运行annotate并出现以下错误 Users nickcoelius rvm gems ruby 1 8
  • 从 Ruby 中的 DateTime 变量获取时间

    我在 ruby 中工作 我有一个包含数据库中今天的日期时间的对象 我只想要时间截断数据 我怎样才能得到那个 Try 日期时间 strftime http www ruby doc org stdlib 1 9 3 libdoc date r
  • 为什么 mongrel 没有在 Rails 3.2.rc 中启动?

    启动 mongrel 的 GEMFILE gem rails 3 1 0 gem mongrel gt 1 2 0 pre2 启动 WEBrick 的 GEMFILE 不是杂种 gem rails 3 2 0 rc2 gem mongrel
  • 测量两个字符串之间相似性的有效方法是什么? (编辑距离使堆栈太深)

    所以 我从这个开始 http en wikibooks org wiki Algorithm Implementation Strings Levenshtein distance Ruby http en wikibooks org wi
  • 仅删除多对多关系

    我有一个 has and belongs to many friends join table gt friends peoples 要添加朋友 我会这样做 people followers lt lt friend这会创建关系和新的个人资
  • Rails、REST 架构和 HTML 5:带有预检请求的跨域请求

    在致力于使我们的网站 HTML 5 友好的项目时 我们渴望采用跨域请求的新方法 不再通过隐藏的 iframe 发布 使用访问控制 http www w3 org TR access control 根据规范 我们开始设置一些测试来验证各种浏
  • (Rails) Assert_Select 的烦人警告

    有谁知道如何让assert select在rake测试期间不输出所有那些讨厌的html警告 你知道 就像这样的东西 ignoring attempt to close body with div opened at byte 1036 li
  • Windows 7 x64 上的 Ruby on Rails SQLite 问题

    当我尝试做的时候db create使用 Windows 7 x64 在具有此数据库配置的 sqlite 数据库上 development adapter sqlite3 database db development sqlite3 tim
  • Bundle 说 gem 丢失了 - 但事实并非如此?

    背景 我正在维护contentRuby On Rails 站点 但我确实没有 Rails 的经验 当尝试运行 Rails 服务器时 rails s我明白了 在任何来源中均找不到 activesupport 3 2 0 Run bundle
  • Rails 4 使用 ajax、jquery、:remote => true 和 respond_to 渲染部分

    使用 AJAX 动态渲染页面以响应提交的表单似乎很常见 其他类似的问题都没有集中于如何以一般方式做到这一点 我能找到的关于这个主题的最好的博客文章在这里 http www gotealeaf com blog the detailed gu
  • 如何向 Rails 应用程序添加自定义字体?

    我想在 RoR 应用程序中使用几种字体 但它们的格式主要是 ttf 和 otf 等 我该如何将这些文件嵌入到我的 Rails 应用程序中 也就是说 一旦我将它们放入我的资产文件夹中 将它们嵌入我的 CSS 和 或 LESS 文件中的语法到底
  • Rails Windows Vagrant 响应时间非常慢

    我在跑 Vagrant 1 7 1 Rails 4 1 4 Thin 1 6 1 Windows 7 每个静态文件的发送时间都超过一秒 在我的 PC 上加载一个页面可能需要大约 20 秒 而在同事的 Linux 机器上则只需瞬间 有一些帖子
  • 来自控制器的 Rails 验证

    有一个联系页面 可以输入姓名 电话 电子邮件和消息 然后发送到管理员的电子邮件 没有理由将消息存储在数据库中 问题 如何 在控制器中使用 Rails 验证 根本不使用模型 或者 在模型中使用验证 但没有任何数据库关系 UPD Model c

随机推荐

  • 如何让“font-weight: lighter”在 Google Chrome 中正常工作?

    在 Google Chrome 可能还有 Safari 中 font weight normal 和 font weight bold 之间似乎没有任何区别 有没有人找到一种方法可以像 Firefox 那样在 Chrome 中调用 font
  • 为什么在 URL 中使用感叹号? [复制]

    这个问题在这里已经有答案了 可能的重复 Facebook 和新 Twitter URL 中的 shebang 有何用途 https stackoverflow com questions 3009380 whats the shebang
  • Cocoa contentOfDirectoryAtPath:某些用户的方法失败并出现错误 - Mac OS X

    这是代码片段 Get into the data folder of it keychainPath keychainPath stringByAppendingPathComponent data default DLog Keychai
  • 注意:未定义的索引[重复]

    这个问题在这里已经有答案了 我有一个复选框可以保护帖子密码 p strong strong p
  • Symfony2 自定义表单错误消息

    你能帮我了解如何使用 Symfony2 自定义表单中的错误消息吗 我想更改 HTML 布局 添加 div 类等 阅读指南 它给出了一段代码 可以放入一个名为的文件中fields errors html twig但它没有告诉将该文件放在哪里以
  • 在 c 函数内分配数组

    我正在尝试在函数内分配和初始化数组 但返回后似乎无法获取值 这是我最后一次几乎可行的尝试 include
  • 如何在 CodeIgniter 中计算具有特定年份日期的行数?

    我有以下查询 query this gt db gt query SELECT COUNT FROM iplog persons WHERE begin date LIKE 2014 我需要计算 2014 年 begin date 的列数
  • 如何在 OpenAPI 3.0 中全局设置 Accept header?

    我通过 SwaggerHub 设置了新的 OpenAPI 是否有一个选项可以强制执行某些操作Accept全局标题 我已经设置了Content Type关于回应 openapi 3 0 0 paths test path get respon
  • AirPlay 的音频输出路由

    我已经查看过 但找不到访问音频输出路由的方法 因此我可以检测音频是否通过 AirPlay 输出 这是我在 iOS 5 0 文档中找到的 kAudioSessionOutputRoute AirPlay 讨论 这些字符串用作与 kAudioS
  • 从 varchar 字段中仅选择单词的首字母

    我在一次采访中被问到 一个来自oracle sql的问题 这似乎是一个简单的问题 但我不知道如何回答 有人可以帮忙吗 如果某列中有 纽约是一座美丽的城市 这样的字符串 select column name from table name 将
  • 绝对定位的弹性盒不会扩展以适应内容[重复]

    这个问题在这里已经有答案了 正如您从下面的代码片段中看到的 查看小提琴 http jsfiddle net tekm28wy 绝对定位的柱状弹性盒不会扩展以适合其子级 例如 在 Chrome 中 它的宽度仅与最宽的子元素一样宽 高度与最短的
  • 为什么使用公共变量?

    变量 方法和类可以获得不同的安全级别 根据我的 C 经验 有 public内部的受保护的受保护的内部私人的 现在 我了解了将方法和类设为私有 内部或受保护的用途 但是变量呢 即使我将变量设置为私有 我也可以使用属性从不同的类中调用它 我一直
  • 计算变化率

    我有一个名为 yield 的数据集 yield lt data frame fruits c apples apples apples oranges oranges oranges pears pears pears year rep 2
  • xslt需要选择单引号

    我需要这样做
  • YouTube API 配额限制和可扩展的应用程序

    我目前正在开发一个需要通过 youtube 上传视频的应用程序 我计划通过 youtube API 在应用程序中分享视频 根据文档 在 YouTube 上分享视频需要 大约 16000 个单位 每个应用程序都有 500 万个单位的补充配额
  • C++ VS2013 调试器断点:未命中

    我有一个相对简单的 C 控制台项目 它执行一些计算并写入输出文件 我试图确定为什么输出文件没有正确的输出 相反 我一直在与调试器作斗争 由于某种原因我无法添加断点在某个函数的某一行之后 无法到达第 1106 行之后到第 1214 行 函数末
  • 获取模拟用户名

    我有一个类需要知道当前有效的用户名 Environment UserName or WindowsIdentity GetCurrent Name是为了那个 但是当启用模拟时 它们会返回LocalUser名称不是ImpersonatedUs
  • 如何使用 SQL 查询删除 PostgreSQL 中的所有模式?

    我需要删除数据库中的所有架构 除了public information schema以及那些LIKE pg 这是我发现的 这个变体似乎不起作用 CREATE OR REPLACE FUNCTION drop all RETURNS VOID
  • Snow Leopard 上的 PyObjc 和 Cocoa

    我即将开始我的 A 级计算项目 高中级别 该项目有望成为 Mac 操作系统的销售点应用程序 不幸的是 目前 Objective C 有点超出我的能力范围 如果我在项目中陷入困境 我没有人可以提供帮助 所以我可能会不及格这门课程 也无法进入大
  • 如何测试载波文件是否更改?

    我正在尝试测试代码中的图像是否随载波更改 但我找不到方法来执行此操作 即使文件无效 对象似乎也被标记为已更改 因此它并未真正更改 查看以下输出 rdb 1 job translated xliff