【问题标题】:How to insert a hash in an ActiveRecord column on Ruby On Rails如何在 Ruby On Rails 的 ActiveRecord 列中插入哈希
【发布时间】:2021-01-11 13:59:44
【问题描述】:

我的开发环境

Rails 6.0.3.4

sqlite3

红宝石 2.6.3

还有一个RoR n00B

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

我已经进行了验证,我可以从数据库中读取数据,从表单等中发布。CRUD 操作很好。到目前为止一切都很好。

现在我想添加一个名为 tracking_data 的新列,这将是一种像这样的哈希

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

这个想法是目标将有一个名为tracking_data 的列,就像上面一样,它本质上是{ date:bool } 的散列。它仅记录用户是否在特定日期(键)上完成了目标。真或假(值)。本质上,用户将选择一个日期,选中/取消选中表单中日期的状态。 我目前正在使用sqlite3。正如官方文档https://api.rubyonrails.org/classes/ActiveRecord/Store.html 中提到的,我正在尝试实现相同的功能。到目前为止我所做的,which obviously is not correct 定义了类似

store :tracking_data, accessors: [ :date, :status]goal.rb 模型文件上。凭借store 包装器,我可以访问目标上的datestatus 访问器方法。我用它来读取表单中的输入。表单代码如下所示

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

所以我的查询是

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

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

附加 我正在使用带有store 的默认 Yaml 序列化程序。任何帮助表示赞赏,如果我能进一步澄清这一点,请告诉我。

谢谢

【问题讨论】:

    标签: ruby-on-rails activerecord


    【解决方案1】:

    如果您将列数据类型定义为jsonb,您可以使用类似的内容创建或更新记录

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

    【讨论】:

      猜你喜欢
      • 2021-12-09
      • 2014-04-09
      • 1970-01-01
      • 1970-01-01
      • 2012-01-28
      • 2013-08-21
      • 2012-10-28
      • 1970-01-01
      • 2013-03-02
      相关资源
      最近更新 更多