gpt4 book ai didi

ruby-on-rails - 将 '01-' 附加到 Rails Controller 上的强参数

转载 作者:行者123 更新时间:2023-11-29 13:21:58 25 4
gpt4 key购买 nike

我有一个使用 jQuery datepicker 的表单只选择月份和年份。

$(".date-input").datepicker({
format: 'mm-yyyy',
startView: "months",
minViewMode: "months"
});

我在后端有 postgreSQL 数据库,日期时间列存储这个日期,显然需要完整格式 'dd-mm-yyyy' 的日期来保存它。在将表单发布到我的 Controller 时,这是我遇到的:

Experience.update(date_from: '02-2016') 使用 date_from 列的 nil 值更新表

所以,问题是我如何将 '01-' 附加到我从 Controller 上的 POST 请求接收到的 date_from 参数作为强参数。

最佳答案

使用 ISO8601 Date格式 (2016-10-21).

$(".date-input").datepicker({
format: 'yyyy-mm-dd',
startView: "months",
minViewMode: "months"
});

您可以使用 Date.iso8601(str)DateTime.iso8601(str) 解析它。

我会创建一个模型级别 setter 来处理这个:

class Experience < ActiveRecord::Base # or ApplicationRecord
def date_from=(val)
super( val.is_a?(String) ? Date.iso8601(val) : val )
end
end

这意味着您不必担心 Controller 级别的参数。只需像任何其他标量值一样将其列入白名单,然后让您的模型完成工作。

我只是将值存储为 DATE 类型(作为该月的第一天)。这在涉及到数据库查询时为您提供了最大的灵 active ,并且在您提取记录时也为您提供了合理的格式,这样您就不必再次解析字符串。

关于ruby-on-rails - 将 '01-' 附加到 Rails Controller 上的强参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40169617/

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