保存哈希文字(告诉Rails不要将哈希解释为嵌套属性)?

时间:2012-12-09 05:45:35

标签: ruby-on-rails ruby activerecord

我认为Rails将我的哈希文字解释为嵌套属性。我实际上只想将哈希转换为字符串。它不是与某个模型相关的嵌套属性,也不应与模型相关。在这里,嵌套值只是通过表单传递数据而不需要太多繁忙工作的便捷方式。

:params是

{"utf8"=>"✓",
 "authenticity_token"=>"[deleted for SO]",
 "scorecard"=>{"1"=>"2",
 "2"=>"2",
 "3"=>"2",
 "4"=>"2",
 "5"=>"2",
 "6"=>"2",
 "7"=>"2",
 "8"=>"2",
 "9"=>"2",
 "10"=>"2",
 "11"=>"2",
 "12"=>"2"}},
 "commit"=>"Create Assessment"}

..但是当我这样做时:

assessment = Assessment.new(params[:assessment])
...
@assessment.save

......我明白了:

unknown attribute: scorecard

有趣的是,何时

attr_accessible :scorecards

..在模型中(注意复数形式),我得到:

Can't mass-assign protected attributes: scorecard

因为attr_accessible是我真正想要的(:记分卡),我得到“未知属性:记分卡”,似乎Rails认为它正在处理嵌套属性。

我可以告诉Rails不要处理:记分卡作为嵌套属性吗?

感谢。

2 个答案:

答案 0 :(得分:1)

你的意思是在attr_accessible中忽略的'吗?

attr_accessible :scorecard(s)

修改

由于您错过了表格中的scorecard

,很多人会收到此错误
unknown attribute: scorecard

答案 1 :(得分:1)

您可以发布表格的列名吗?您似乎错过了“记分卡”栏目。或者你把它命名为'记分卡'?以防万一。

此外,您必须声明序列化:记分卡以保存序列化值。将其另存为JSON也是一种选择。只需要额外的解析。