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

Ruby on rails 保存哈希文本(告诉Rails不要将哈希解释为嵌套属性)?,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我认为Rails将我的哈希文本解释为嵌套属性。我实际上只是想把散列转换成字符串。它不是与某个模型相关的嵌套属性,也不应该与某个模型相关。在这里,嵌套值仅仅是通过表单传递数据的一种方便方式,而无需做太多的工作 :params是 {"utf8"=>"✓", "authenticity_token"=>"[deleted for SO]", "scorecard"=>{"1"=>"2", "2"=>"2", "3"=>"2", "4"=>"2",

我认为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
。。在模型中(注意复数形式),我得到:

因为当attr_accessible是我真正想要的(:scorecard)时,我得到了“unknown attribute:scorecard”,Rails似乎认为它处理的是嵌套属性

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


谢谢。

您的意思是在属性中省略“s”吗

attr_accessible :scorecard(s)
编辑

您可能会遇到下一个错误,因为您的表中缺少
记分卡

unknown attribute: scorecard

你能把表格的列名贴出来吗?您似乎缺少“记分卡”一栏。还是你把它命名为“记分卡”?以防万一


您还必须声明serialized:scorecard以保存序列化值。将其保存为JSON也是一个选项。只需要额外的解析。

另外,要将散列存储为字符串,请在模型中声明
serialize:scorecard
。是的,我确实想省略它。这导致了“不能对受保护的属性进行批量签名:记分卡”(没有“s”)。将“s”添加到网页上的参数名称中,则需要attr_Access成为记分卡DSS,并在末尾添加两个“s”。在模型中执行“serialize:scorecard”(序列化:记分卡)似乎并没有起到作用(尽管我期望它会起作用);我仍然得到“未知属性:记分卡”。s/这导致/添加属性可访问的线索中的“s”,以便您发布模型和控制器?事实上,我缺少该列。谢谢刚接触Rails,没有意识到我的迁移没有更新我的模式。
unknown attribute: scorecard