在保存到 Rails 之前将输入转换为整数

2024-06-24

我有一组代表用户生日的选择输入:出生年份、出生月份和生日。我想像这样验证出生年份:

  validates_inclusion_of :birthyear, :in => Date.today.year-50..Date.today.year-12

因此,用户注册时的年龄可以至少为 12 岁,但最多为 50 岁。

我的问题是输入的变量是字符串而不是整数。

那么如何将输入转换为整数呢?有没有更简单的方法来检查用户年龄?


听起来你已经定义了birthyear数据库列作为字符串。 Rails 会在分配时将输入参数转换为适当的类型。所以user.new(params[:user])会保存birthyear在定义的类型中购买数据库列类型。

如果您无法将 db 列更改为整数,请尝试创建有效字符串的数组。

validates_inclusion_of :birthyear,
  :in => (Date.today.year-50..Date.today.year-12).map(&:to_s)

现在,请记住,在生产中,模型类可能会被缓存,并且在重新启动之前,新年的日期范围可能是错误的。

我会将其添加到验证函数中,而不使用包含验证来防止这种情况。

def validate
  current_year = Date.today.year
  if birthyear && (birthyear.to_i <= current_year - 50 || birthyear.to_i >= current_year - 12)
    errors.add(:birthyear, "must be between 12 and 50 years of age")
  end
end

现在,所有这些都假设输入的年份是 4 位数。

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

在保存到 Rails 之前将输入转换为整数 的相关文章

  • Rails:为什么我的所有 scss 文件都没有被编译?

    我是 Rails 的初学者 我认为我还不清楚如何组织样式表 目前 我的资产 样式表中有两个文件 应用程序 css home css 当我运行 rake assets precompile 我意识到只有 application css 被编译
  • 为什么我不能在初始化中使用 attr_accessor ?

    我正在尝试做一个instance eval随后是一个attr accessor inside initialize 我不断收到这样的消息 初始化 未定义的方法 attr accessor 为什么这不起作用 代码看起来有点像这样 class
  • 将 YAML 文件作为常量加载到 Rails 控制器中是否有效?

    我有几个大型数组需要可用于特定视图 目前 我将它们存储在 YAML 文件中并加载到控制器常量中 如下所示 我假设当 Rails 在环境设置期间加载文件时 这个常量存储在内存中 但我偏执地想知道每次访问该控制器时是否都在访问文件系统 谁能建议
  • Rails 4 生产环境中资产出现 404 not found 错误

    我是java环境中的rails新手 我对轨道 3 到轨道 4 的资产管道几乎没有什么困惑 目前我使用的是 Rails 4 2 5 我在本地环境中创建了一个示例应用程序 我从 app assets javascripts 内部创建了一个新的
  • puma 初始化程序不适用于 Rails 4.2

    我之前安装过很多次puma 从来没有出现过这个问题 我逐字遵循heroku 的指示 我创建了一个Procfile里面有这个 web bundle exec puma C config puma rb 这是配置文件 puma rb worke
  • 如何修复 PagesController#home 缺少请求格式模板:text/html

    对于我的 Rails 6 应用程序routes rb I have Rails application routes draw do root pages home end 并在我的pages controller rb I have cl
  • 如何在 swagger 中传递多值查询参数

    我在 swagger yml 中有以下服务 该服务被编写为可以多次传递page id 例如 pages page id 123 page id 542 我检查了这个链接https swagger io specation https swa
  • 非特权、非 root 用户无需 root 或 sudo 即可启动或重新启动 Webserver 服务器(例如 nginx)

    我正在使用 capistrano 部署 Rails Web 应用程序 我想为网络服务器上的部署用户提供尽可能少的权限 作为非特权用户 除了重新启动网络服务器之外 我能够做我需要做的一切 我在 ubuntu 服务器上执行此操作 但这个问题并非
  • 如何从 Sinatra 中删除路线?

    我有一些动态加载的插件 它们在启动时注册它们的路由 但是我还需要能够在禁用它们时删除它们的路由 有没有办法删除现有的路线 API 没有任何我能找到的方法来删除它们 我能想到的唯一其他方法就是直接访问 Sinatra Base 中的 rout
  • 如何使用 Unicorn 进行滚动重启?

    假设我对 Rails 应用程序做了一些更改 例如更改 html 布局 我如何使用 Unicorn 进行滚动重启 实际上 人们希望为最新版本的 Rails 应用程序启动独角兽进程 或工作人员 然后自动将流量从旧的独角兽进程 工作人员切换到新的
  • Rails 资产管道不包括 application.js 清单中所需的文件

    Rails 资产管道不包含 application js 中所需的文件 呈现给浏览器的唯一 javascript 文件是 application js 并且 require 行未编译为包含应有的标签 This is a manifest f
  • 设计确认链接将用户重定向到 heroku 域而不是自定义域

    我有一个网络应用程序 前端采用 Angular 后端采用 Rails 我有一个自定义域www example com并将用户重定向到 heroku URL example herokuapp com 用户注册后 需要确认他们的电子邮件 当他
  • 通过 Devise 将 Discourse SSO 与现有 Rails 站点相结合

    我有一个现有的 Rails 应用程序 它使用 devise 作为用户身份验证 我添加了一个话语论坛 http www discourse org一切都很顺利 它驻留在子域上 我已阅读该帖子https meta discourse org t
  • 如何在 js.erb 中使用 Ruby 代码?

    我可以使用以下方式在模态中渲染部分内容escape javascript在js erb文件代码中 body append my modal modal show 但是 我似乎无法获得以下结果 console log ERB 将输出一个纯字符
  • Heroku: PG::ConnectionBad: 无法连接到服务器: 连接被拒绝

    我尝试将新应用程序推送到 heroku 并出现此错误PG ConnectionBad could not connect to server Connection refused 这是我的 gemfile 与此有关系吗 我正在使用 spre
  • Rails:构建涉及多态关联和 STI 的查询

    我正在尝试查找有关照片的 10 条最新评论 以便将它们集成到我的 Rails 3 0 3 应用程序上的活动提要中 我有一个Photo模型 它继承自Upload使用单表继承的模型 class Upload lt ActiveRecord Ba
  • Rails:将值序列化为逗号分隔而不是 YAML

    我正在寻找一种方法来存储例如的序列化值 列中的 ID 在之前的声明中 这不是最佳设计 该列用于关联记录的 ID 但仅在显示记录时使用 因此不会对该列进行选择进行查询 也不会对此列进行联接任何一个 在 Rails 中 我可以使用以下方法序列化
  • 根据多列删除重复记录

    在我们的系统中 我们每小时从外部数据库进行导入 由于导入脚本中存在错误 现在存在一些重复记录 如果任何记录具有相同的内容 则视为重复 legacy id and company 我可以运行什么代码来查找并删除这些重复项 我正在玩这个 Pro
  • ubuntu上rails mysql gem问题

    Ruby on Rails 我想调用本地主机上的控制器 但服务器说 缺少 mysql gem 将其添加到您的 Gemfile 中 gem mysql 2 8 1 问题 当我点击 gem list 命令时 我得到了一个包含 mysql 2 8
  • 更改设备消息“电子邮件已被占用”

    我在 ruby on Rails 应用程序中使用 devise gem 用户注册时 如果电子邮件已存在 则会出现默认消息 电子邮件已被占用 我已经在 en yml 中更改了此消息 activerecord errors messages t

随机推荐

  • 显示 p:dataTable 行号

    于明镜example http www mkyong com jsf2 how to display datatable row numbers in jsf 他们展示了如何在 JSF 中显示数据表行号 他们使用 javax faces m
  • 如何将swaggerhub生成的flask swagger服务器部署到heroku?

    我正在尝试部署从 swaggerhub 生成的 Flask swagger 服务器 下面是我使用的文件夹结构和 procfile 有谁知道如何在heroku中部署这个flask swagger服务器吗 project swagger cod
  • Mathematica:获取图形基元和指令

    如何从图形基元和指令中获取图形基元和指令Graphics目的 Leonid Shifrin 在帖子中展示了如何删除它们Mathematica 删除图形基元 https stackoverflow com questions 6317253
  • IE9 createElement 和设置innerHTML 在设置操作上放置标签?

    不确定我是否遗漏了一些明显的东西 因为这是我第一次尝试使用原始 DOM api 而不是通过 jQuery 等 做很多事情 考虑以下代码 我在其中使用 document createElement 手动创建 TBODY 然后设置它的inner
  • 在 QGis 中打开 Mapbox 地图

    我正在寻找一种在 QGis 中显示我的 Mapbox 地图的方法 在 mapbox com 上编辑的 Baselayer 以及从tilemill 上传的数据 这里有人已经找到方法了吗 有一个功能或插件可以做到这一点吗 感谢您未来的回答 Ad
  • 将数据帧中的 NaN 转换为零

    我有字典并使用创建了 Pandas cars pd DataFrame from dict cars dict orient index 和 对索引进行排序 按字母顺序排列汽车 cars sort index axis 1 排序后 我注意到
  • 我应该使用 Web API 还是 Web 方法?

    我正在尝试了解 Web api 和一些有关 Web 方法的新闻 我听说我们应该停止使用一些来源的 Web 方法 此外 如果不再使用 Web 方法 Web API 是否会成为继任者 Web 方法是 ASMX 技术的一部分 ASMX 是一项遗留
  • E0145 成员可能未初始化 - cmake - VS2017

    我正在尝试将 C 应用程序与 PCL 库链接 我使用 VCPKG 安装了 PCL 及其所有依赖项 我正在使用 Visual Studio 2017 和 cmake 3 12 for X64 当我尝试构建解决方案时 它给了我以下错误 E014
  • 了解 scikit-learn GridSearchCV - 参数调整和平均性能指标

    我试图了解 scikit learn 中的 GridSearchCV 究竟如何实现机器学习中的训练 验证 测试原理 正如您在下面的代码中看到的 我理解它的作用如下 将 数据集 分为 75 和 25 其中 75 用于参数调整 25 是保留的测
  • “识别”命令无法识别图像文件。 (赫罗库)

    我正在尝试让 Paperclip 与 Heroku 和 Amazon S3 一起使用 在本地主机 Mac OS 和 Amazon 上一切正常 但是当我部署到 heroku 并尝试该功能时 出现此错误 2 errors prohibited
  • SSL 与 WinHTTP

    我用 winhttp 创建了一个简单的 Web 服务器 它只有一个客户端 一个网站 在我启用 SSL 之前它工作得很好 我没有收到任何错误 并且一切似乎都正常 但网站在尝试连接时收到错误代码 104 并且我在服务器中没有看到任何活动 该网站
  • 在 AppDelegate Swift 中获取本地通知的正文文本或标识符

    每当应用程序收到操作响应时 我想访问 AppDelegate swift 中的应用程序数据 我试图使用 func userNotificationCenter center UNUserNotificationCenter didRecei
  • 如果订单状态为“暂停”,则禁用 WooCommerce 新订单电子邮件通知 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 当订单状态为 暂停 时 是否有办法禁用发送给管理员的 新订单 电子邮件通知 或者仅将其启用为 处理 状态 我还尝试了不同的方法 仅在状态为
  • C# (.Net) 的面向方面编程 (AOP) 解决方案及其功能 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想在这里询问3个信息 有无集成解决
  • 我如何为网站创建安装程序。 PHP mysql [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一个制作的网站 我需要知道如何为
  • 如何使用 Perl 将连接数据线转换为方案块?

    我正在寻找一种将信号连接转换为简单方案或图表的方法 假设我有 2 个组件 周围有 2 条线路 信号 component A input S1 output S2 component B input S2 output S1 这将是输入数据文
  • Angular 2 bootstrap 函数给出错误“参数类型 AppComponent 无法分配给参数类型 Type”

    这是我的第一个简单的Hello World角度 2 应用程序来自Angular 2 快速入门指南 https angular io docs ts latest quickstart html import Component from a
  • 将数组初始化为空白自定义类型 OCAML

    我设置了自定义数据类型 type vector a float b float 我想初始化一个向量类型的数组 但不包含任何内容 只是一个长度为 x 的空数组 下列 let vecarr Array create max seq length
  • 递归地将整个文件夹添加到存储库

    我正在尝试向 GitHub 上的 master 分支添加一个分支 并将一个文件夹推送到该分支上 分支的文件夹结构如下所示 Social App Source Code Dev Trunk Social App 以及所有源代码文件都在最后一个
  • 在保存到 Rails 之前将输入转换为整数

    我有一组代表用户生日的选择输入 出生年份 出生月份和生日 我想像这样验证出生年份 validates inclusion of birthyear in gt Date today year 50 Date today year 12 因此