【发布时间】:2021-01-11 13:59:44
【问题描述】:
我的开发环境
Rails 6.0.3.4
sqlite3
红宝石 2.6.3
还有一个RoR n00B
我的模型Goal 有一些属性,例如title、created_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 包装器,我可以访问目标上的date 和status 访问器方法。我用它来读取表单中的输入。表单代码如下所示
<%= form.date_field :date %>
<%= form.check_box :status %>
所以我的查询是
如何从表单中读取用户输入的日期以及状态,并将其设置为 tracking_data 哈希中的键/值。
基本上我不应该在store 函数中传递:date 属性,因为它必须由用户输入。
附加
我正在使用带有store 的默认 Yaml 序列化程序。任何帮助表示赞赏,如果我能进一步澄清这一点,请告诉我。
谢谢
【问题讨论】:
标签: ruby-on-rails activerecord