gpt4 book ai didi

ruby-on-rails - 在保存到 Rails 之前将输入转换为整数

转载 作者:太空宇宙 更新时间:2023-11-03 16:39:14 25 4
gpt4 key购买 nike

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

  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 位数的年份。

关于ruby-on-rails - 在保存到 Rails 之前将输入转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2685226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com