如何在RubyonRails上的ActiveRecord列中插入哈希



我的开发环境

轨道6.0.3.4

sqlite3

ruby 2.6.3

RoR n00B

我的型号Goal有一些属性,如titlecreated_on等。基本上是标准类型,如text,date,boolean

我已经进行了验证,我可以从DB中读取,从表单中发布等等。RUD操作很好。到目前为止还不错。

现在我想添加一个名为tracking_data的新列,它将是一种类似于的散列类型

{
21-12-2020:true,
22-12-2020:false,
etc
etc
}

这个想法是目标将有一个名为tracking_data的列,就像上面一样,它本质上是{ date:bool }的散列。它只是记录用户是否在某个特定日期(键(完成了目标。True或false(值(。基本上,用户将选择一个日期,选中/取消选中表单中日期的状态。我目前正在使用sqlite3。正如官方文件中提到的那样https://api.rubyonrails.org/classes/ActiveRecord/Store.html,我正在努力实现这一点。到目前为止,我所做的以及which obviously is not correct是定义类似的东西

store :tracking_data, accessors: [ :date, :status]在CCD_ 11模型文件上。通过store包装器,我可以在目标上访问datestatus访问器方法。我用它来读取表单中的输入。表单代码看起来像这个

<%= form.date_field :date %>
<%= form.check_box :status %>

所以我的查询是

我如何从表单中读取用户输入的日期以及状态,并将其设置为tracking_data哈希中的键/值。

基本上,我不应该在store函数中传递:date属性,因为这必须由用户输入。

附加我使用默认的带有store的Yaml序列化程序。感谢您的帮助,如果我能进一步澄清,请告诉我。

谢谢

如果将列数据类型定义为jsonb,则可以使用之类的东西创建或更新记录

Goal.create!(tracking_data: { '21-12-2020': true })

最新更新