Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在RubyonRails上的ActiveRecord列中插入哈希_Ruby On Rails_Activerecord - Fatal编程技术网

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

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

我的开发环境

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
    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 })