允许在数字字段中使用逗号

2024-01-18

这是一个非常愚蠢的问题,我觉得我一定错过了一些简单的事情。我有一个表格quantity场地。人们在输入数量时不断输入逗号(例如,他们输入12,000表示一万二千)所以我想在保存数量之前去掉逗号(12000在示例中)转换为数据库中的整数列。

到目前为止我已经尝试了两种方法。按照建议重写 setter 方法在这个问题中 https://stackoverflow.com/q/6541864/574190

  def quantity=(num)
    num.gsub!(',', '') if num.is_a?(String)
    self[:quantity] = num.to_i
  end

这在某种意义上是有效的。如果我输入12,000在数量字段中并提交表格,我得到12000在数据库中。问题是它也绕过了所有quantity验证。例如,我不再可以验证数量值的存在。不是很好。

我还尝试使用验证前回调(而不是覆盖设置器):

  before_validation :sanitize_quantity

  def sanitize_quantity
    # Doesn't wok because quantity.to_i already called by this point.
  end

这不起作用,因为当数量达到回调方法时,Rails 已经调用了to_i在上面。这意味着12,000将被截断为12当它到达回调时。再一次,不好。

除了在客户端删除逗号之外,我还能尝试什么?

最后一点,我知道这本质上是一件愚蠢的事情,因为某些国家以不同的方式使用句号和逗号。无论如何我仍然需要这样做。


使用类型强制

如果我正确理解你的问题,那么你正试图将字符串强制转换为数字。如果是这样,您可以使用显式强制转换,如下所示:

validates :quantity, presence: true, numericality: true

def quantity=(num)
  self[:quantity] = num.to_s.scan(/\b-?[\d.]+/).join.to_f
end

测试和示例

看看这是如何工作的,您可以在控制台尝试以下操作。

# String as input.
number = '12,956.05'
number.to_s.scan(/\b-?[\d.]+/).join.to_f
=> 12956.05

# Float as input.
number = 12956.05
number.to_s.scan(/\b-?[\d.]+/).join.to_f
=> 12956.05

# Using an ActiveRecord object.
q = Quantity.new quantity: '12,956.05'
=> #<Quantity id: nil, quantity: 12956.05, created_at: nil, updated_at: nil>
q.save
=> true
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

允许在数字字段中使用逗号 的相关文章

  • 如何在 gem 的示例脚本中使用 pry-byebug ?

    我正在制作我的第一个 gem 它不是 Rails 应用程序 而是一个带有一些 AI 的 tic tac toe 库 这样我就可以与一个永远不会输的计算机对手比赛 并在可能的情况下强行获胜 现在我正在尝试调试人工智能中的攻击策略 但我似乎无法
  • 使用复选框过滤列表

    我有一个电影列表及其评级 在我的页面顶部 我有一个表单 其中提供了一个复选框列表 其中显示了每个可用的评级 G PG 13 等 一旦用户单击复选框并点击提交 我只想显示所选的电影 在我的索引方法中 我有一个名为的实例变量 filtered
  • 如何在 HAML 中为 Devise 生成视图

    这是我的 Gemfile gem haml group development do gem hpricot gem ruby parser end 然后我在终端 命令窗口中执行以下语句 bundle install rails gener
  • 下载所有 gems 依赖项

    我想通过下载任何所需的文件并将它们带到另一台计算机来安装指南针没有互联网连接 我已经下载了指南针的源包 当我在未连接的计算机上运行 gem 时 它抱怨缺少依赖项 有什么解决办法吗 这正是我遇到的问题 经过一段时间的搜索后 我找到了一个可以使
  • Rails 3.1 和图像资源

    我已将管理主题的所有图像放入名为 admin 的文件夹内的资产文件夹中 然后我像平常一样链接到它 Ruby image tag admin file jpg CSS logo background url assets images adm
  • Rails 4 的 mobile_fu

    我正在尝试将我的应用程序从 Rails 3 2 13 切换到 Rails 4 在此过程中 我遇到了一个主要障碍 我使用 gem mobile fu 来确定用户是否来自移动设备 该 gem 需要 Railties 3 2 13 但 Rails
  • Capybara-webkit 无法处理与 bootstrap glyphicon 的链接

    我有一个链接 link to q span class glyphicon glyphicon trash span html safe feed item data confirm Are you sure toggle tooltip
  • 检查rails devise ldap gem中的组成员身份,是否在yaml中?

    我是否应该使用 ldap yml 文件来确保使用 ldap 进行身份验证的人拥有分配给他们的正确组以允许他们进入 无论如何 我都不是 AD 专业人士 这让我很困惑 什么是组和属性 据我了解 我们在 AD 中有一个用户 他们有一个 samAc
  • 多次部署后 Heroku Slug 大小

    我有一个红宝石 on Rails非常接近 slug 大小限制 300mb 的应用程序 我已经尽可能地减小了尺寸 slugignore但还没有得到我想要的结果 一时兴起 我尝试创建一个新的Heroku应用程序并向其部署相同的 git 存储库
  • 如何使用 Ruby on Rails 3 检查 HTTP 请求的“Content-Length”字段?

    我正在使用 Ruby on Rails 3 在我的视图文件中我有以下代码 为了避免服务器过载 我会在服务器接收上传文件之前检查上传文件的大小 这是因为 按下表单的提交按钮 服务器会先完整接收文件 然后再检查文件 我知道一个HTTP 请求有标
  • Capybara with Rails:如何仅查找不可见元素

    我正在 Rails 项目 Rails 5 2 0 中使用 Capybara capybara 3 1 0 进行系统测试 确保元素不可见的方法是什么 我当时用的是visible false选项 直到我发现它也匹配可见元素 例如我使用 find
  • Emacs、ruby:将 do 结束块转换为大括号,反之亦然

    我经常发现自己转换这样的代码 before do something end to before something 有没有办法在 emacs 中自动执行此任务 我使用 ruby mode 和 rinary 但它们在这里没有太大帮助 rub
  • Ruby gem 环境问题 - LoadError: no such file to load -- robots

    我正在尝试使用 anemone gem 编写一个爬虫 这需要 robots gem 不管出于什么原因 机器人绝对不会包括在内 这是我的一些环境信息 gem list d robots LOCAL GEMS robots 0 10 1 Aut
  • 使用 Passenger + Apache 相对于 Webrick 的优势

    我想说服我的管理层 使用 Apache 乘客设置是继续生产的方法 而不是使用 webrick 或 mongrel 我从网上找到了一些观点 如果您能添加您的想法 那将非常有帮助 因为这将有力地帮助我表达我的观点 欢迎提供技术细节 如果您有任何
  • Rails - 用于集合集的单选按钮

    我有以下输出选择框 br 替代输出单选按钮的 Rails 方法是什么 对于单选按钮 您必须自行迭代并输出每个单选按钮及其标签 事实上这真的很容易
  • Python 的“zip”内置函数的 Ruby 等价物是什么?

    Ruby 是否有与 Python 内置函数等效的东西zip功能 如果不是 做同样事情的简洁方法是什么 一些背景信息 当我试图找到一种干净的方法来进行涉及两个数组的检查时 出现了这个问题 如果我有zip 我可以写这样的东西 zip a b a
  • 如何以 Rails 形式将图像从 上传到具有 Rails Active Storage 的 S3?

    正如标题中所述 我正在尝试使用 Rails 的 Active Storage 从嵌套在 Rails 表单中的元素将图像上传到我的 S3 存储桶 到目前为止我已经能够使用使用 Active Storage 上传图像 这User class h
  • Rails 3.1 中何时将图像放入 app/assets 以及何时放入 /public/images?

    我仍然不太明白 在这种情况下 在 Rails 3 1 中将图像放在哪里 图像被处理 例如通过回形针或蜻蜓 并存储在文件夹中 不使用像 s3 这样的外部服务 f e 在开发中 当我只有图像时 我将在样式表中使用它 例如背景 图标 AppSto
  • Rails 3 SSL 路由从 https 重定向到 http

    这个问题与此相关SO 问答 rails 3 ssl deprecation https stackoverflow com questions 3634100 rails 3 ssl deprecation建议使用routes rb和类似的
  • rspec 中的模拟方法链

    有一系列方法可以获得user目的 我试图模拟以下内容以返回user in my Factory Girl current user AuthorizeApiRequest call request headers result 我可以模拟该

随机推荐

  • Tkinter 滚动条不滚动

    我正在尝试创建一个带有两个画布和一个滚动条的图形用户界面 同时穿过这两个画布 作为另一个项目的测试 我创建了根 两个画布 并使用网格方法将一些标签固定到每个画布上 并创建了滚动条 但是 当我运行该程序时 滚动条会移动 但窗口的内容根本没有改
  • 在 Java 中管理 XAdES 签名的库 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个允许创建和验证 XAdES 签名的 Java 库 格式越多越好 XAdES BES XAd
  • 二维unordered_map

    typedef boost unordered map
  • 为什么即使对象指针在多重继承中不同,情况也是一样的?

    当使用多重继承时 C 必须维护多个 vtable 这导致对公共基类有 多个视图 这是一个代码片段 include stdafx h include
  • 具有非静态 lambda 成员的类不能使用默认模板参数吗?

    这个小测试程序 include
  • 通过 .htaccess 从 URL 中删除双斜杠或更多斜杠时出现问题

    我使用以下 htaccess 规则从 Web url 中删除双斜杠或多个斜杠 remove double more slashes in url RewriteCond REQUEST URI RewriteRule 1 2 R 301 L
  • 选定列的高图表不同颜色

    Highcharts 中不同的选定列是否可以有不同的颜色 这是我想做的事情的草图 http jsfiddle net jZmYW 4 http jsfiddle net jZmYW 4 选择一个点 列 时 它应该具有特定的颜色 我尝试通过为
  • XSLT 字符串替换

    我不太了解 XSL 但我需要修复这段代码 我已经减少了它以使其更简单 我收到这个错误 无效的 XSLT XPath 函数 在这条线上
  • Java MVC Web开发框架?

    我想用java开发一个网站 但我在java web开发方面是绝对的初学者 我想使用一个使用 MVC 模式和 Ajax 的框架 我做了一些搜索 发现 Spring 或 Struts 合适 但我不确定 您能推荐一个框架吗 游戏框架 http w
  • .NET - 从非托管数组复制到非托管数组

    我一直在查看 Marshal 类 但似乎找不到允许我从非托管数组 IntPtr 复制到另一个非托管数组 IntPtr 的方法 使用 NET 可以实现这一点吗 您还可以通过 DllImport RtlMoveMemory 来完成工作 DllI
  • 如何使用谷歌翻译应用程序

    我编写了有关字典句子的程序 我希望有功能可以在我的应用程序中转到 谷歌翻译 应用程序 我该如何使用它 我应该导入什么东西吗 据我所知 谷歌翻译 Android 应用程序没有公开任何标准Intent是你可以使用的 很遗憾 但同时也很奇怪 你会
  • Perl 意外行为:croak 与 try catch

    我看到一些异常指向 catch 块本身 参见下面的示例 在我看来 这是一个意想不到的行为 因为它改变了原始异常的位置并使得调试变得困难 应该说在第 13 行处死亡 如果我使用 die confess 或使用 eval 代替 try catc
  • FirebaseApp:Firebase API 初始化失败

    我遇到了由 Firebase Api 引起的错误 这是错误日志 Firebase API initialization failure java lang reflect InvocationTargetException Caused b
  • 哪个 C# 程序集包含 Invoke?

    另一个问题 为什么 VS10 如此热衷于抱怨 Invoke 在我不断追求让我的应用程序工作成为世界上最好的 C 程序员的过程中 我认为线程是一件好事 MSDN 有一篇关于制作的有用文章对控件的线程安全调用 http msdn microso
  • 传递对象时 Axios POST 请求不起作用

    我正在尝试使用 axios 在 vue js 应用程序中向本地 API 发出发布请求 并且响应返回空数据 使用 Postman 工具 API 上的 post 请求工作正常 下面是我的代码 var the data title This is
  • WebClient DownloadString 不返回任何内容

    我想从海盗湾的搜索查询中获取源代码 我的代码中有这个 但它不返回任何内容 WebClient webpage new WebClient string source webpage DownloadString http thepirate
  • FlatList 在添加新数据时重新渲染所有数据

    我测试了 FlatList 这是我想做的 1 使用componentDidmount获取10条初始数据2 向下滚动可获取另外 10 条数据 App js import React from react import View SafeAre
  • 如何防止 Typescript 查看父 node_modules 文件夹

    我在另一个 NPM 包中有一个 NPM 包 子包有一些代码 例如import range from iter tools 即使子 package json 没有依赖项iter tools I am NOT出现任何类型的 Typescript
  • 使用Visual Studio 2010开发nodejs

    是否可以使用VS2010开发NodeJS应用程序 我说的是普通的 Javascript 而不是 Azure 或任何类似的花哨的东西 我只是想使用 VS2010 作为 Javascript 编辑器 因为我有 NET 背景 而且我对它非常满意
  • 允许在数字字段中使用逗号

    这是一个非常愚蠢的问题 我觉得我一定错过了一些简单的事情 我有一个表格quantity场地 人们在输入数量时不断输入逗号 例如 他们输入12 000表示一万二千 所以我想在保存数量之前去掉逗号 12000在示例中 转换为数据库中的整数列 到