【问题标题】:Storing key value serialized extra fields in model (Rails)在模型中存储键值序列化的额外字段(Rails)
【发布时间】:2012-10-23 13:02:23
【问题描述】:

如果这个问题已经得到解答,请原谅我,我已经花了一段时间来解决类似的问题,但似乎没有一个能够实现我想要的。

我有一个名为Contact 的模型,它存储了一个联系人的信息。我想添加添加自定义字段的功能。也就是说,用户可以存储keyvalue,它们存储在模型上的序列化对象中。因为键是自定义的,所以我不能只使用 attr 编写器来访问值,就好像它们在模型本身上一样。

我尝试将其序列化为哈希,但我的问题是在提交数据时使用表单输入。出于这个原因,我开始使用带有 [{key: 'foo', value: 'bar'}] 的哈希数组,但是在编辑表单时,旧值不会显示出来,我不完全确定最好的方法接近这个。我试图通过fields_for :extra_values 实现这一目标

【问题讨论】:

  • 您能出示联系表格吗?用户如何输入键/值对?
  • 我建议添加另一个模型 ExtraValue 来存储这些值,并联系 has_many :extra_values
  • @TomL 他们现在不是,这就是问题所在。我可以用 javascript 破解它,但这并不是我想要的。
  • @Yanhao 是的,我也这么想,但想避开另一张桌子。我想这可能是最好的方法。
  • @Yanhao 就这样结束了。随意添加它作为答案,我会接受它。干杯

标签: ruby-on-rails forms


【解决方案1】:

在模型的序列化字段中存储数据存在一些小问题。首先,ActiveRecord 总是认为序列化的字段是脏的,因此,每当调用save 时,数据库中的记录总是会更新。二是序列化字段中保存的数据难以查找。所以我建议添加另一个模型 ExtraValue 来存储这些值,并让 Contact has_many :extra_values。然后您可以利用嵌套表单来构建您的表单。

【讨论】:

    猜你喜欢
    • 2016-12-29
    • 1970-01-01
    • 1970-01-01
    • 2019-10-11
    • 1970-01-01
    • 2015-10-14
    • 2012-05-16
    • 2011-04-30
    • 1970-01-01
    相关资源
    最近更新 更多