我的开发环境
轨道6.0.3.4
sqlite3
ruby 2.6.3
和RoR n00B
我的型号Goal
有一些属性,如title
、created_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
包装器,我可以在目标上访问date
和status
访问器方法。我用它来读取表单中的输入。表单代码看起来像这个
<%= form.date_field :date %>
<%= form.check_box :status %>
所以我的查询是
我如何从表单中读取用户输入的日期以及状态,并将其设置为tracking_data哈希中的键/值。
基本上,我不应该在store
函数中传递:date
属性,因为这必须由用户输入。
附加我使用默认的带有store
的Yaml序列化程序。感谢您的帮助,如果我能进一步澄清,请告诉我。
谢谢
如果将列数据类型定义为jsonb
,则可以使用之类的东西创建或更新记录
Goal.create!(tracking_data: { '21-12-2020': true })