0

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 が実際に必要なもの (:scorecard) である場合、「不明な属性: スコアカード」が表示されるため、入れ子になった属性を扱っていると Rails が認識しているようです。

:scorecard をネストされた属性として扱わないように Rails に指示できますか?

ありがとう。

4

2 に答える 2

1

テーブルの列名を投稿できますか? 「スコアカード」列が欠落しているようです。それとも「スコアカード」と名付けましたか?念のため。

また、シリアル化された値を保存するには、シリアル化された :scorecard を宣言する必要があります。JSON として保存することもできます。追加の解析が必要です。

于 2012-12-09T14:25:35.020 に答える
1

attr_accessibleの 's'を除外するつもりだったのですか?

attr_accessible :scorecard(s)

編集

scorecardテーブルに列がないため、次のエラーが発生することがよくあります

unknown attribute: scorecard
于 2012-12-09T06:38:49.780 に答える