Ruby on rails 如何在RubyonRails上的ActiveRecord列中插入哈希
我的开发环境 Rails 6.0.3.4 sqlite3 ruby 2.6.3 和aRoR n00B 我的模型Ruby on rails 如何在RubyonRails上的ActiveRecord列中插入哈希,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我的开发环境 Rails 6.0.3.4 sqlite3 ruby 2.6.3 和aRoR n00B 我的模型Goal有一些属性,如title、created\u on等。 基本上是标准类型,如文本、日期、布尔值等 我有适当的验证,我能够从数据库读取,从表单发布等。CRUD操作很好。到目前为止还不错 现在我想添加一个名为tracking\u data的新列,它将是一种如下所示的散列 { 21-12-2020:true, 22-12-2020:false, etc
Goal
有一些属性,如title
、created\u on
等。
基本上是标准类型,如文本、日期、布尔值等
我有适当的验证,我能够从数据库读取,从表单发布等。CRUD操作很好。到目前为止还不错
现在我想添加一个名为tracking\u data
的新列,它将是一种如下所示的散列
{
21-12-2020:true,
22-12-2020:false,
etc
etc
}
<%= form.date_field :date %>
<%= form.check_box :status %>
其想法是,目标将有一个名为跟踪_数据
的列,与上面类似,它本质上是{date:bool}
的散列。它只是记录用户是否在特定日期(关键点)完成了目标。True或false(值)。基本上,用户将选择一个日期,选中/取消选中表单中日期的状态。
我目前正在使用sqlite3
。正如官方文件中提到的,我正在尝试实现同样的目标。到目前为止,我所做的,显然是不正确的
Goal.create!(tracking_data: { '21-12-2020': true })
存储:跟踪数据,访问者:[:日期,:状态]
在goal.rb
模型文件中。借助存储
包装器,我可以访问目标上的日期
和状态
访问器方法。我用它来读取表单中的输入。表单代码如下所示
{
21-12-2020:true,
22-12-2020:false,
etc
etc
}
<%= form.date_field :date %>
<%= form.check_box :status %>
所以我的问题是
如何从表单中读取用户输入的日期以及状态,并将其设置为跟踪数据散列中的键/值
基本上,我不应该在存储
函数中传递:date
属性,因为这必须由用户输入
附加的
我将默认Yaml序列化程序用于存储
。任何帮助都是感激的,请让我知道,如果我可以进一步澄清这一点
谢谢如果将列数据类型定义为jsonb
,则可以使用以下内容创建或更新记录
Goal.create!(tracking_data: { '21-12-2020': true })