form_for ループを使用して、コントローラの create メソッドにデータを送信しています。form_for には、テーブルのどのフィールドにも関連付けられていない text_fields がいくつかあります。基本的には、データを入力して create メソッドの追加のロジックに使用したい自由なテキスト フィールドです。
フォームを送信すると、作成の最初の行がヒットします。
@user = User.new(params[:user])
次のエラーが発生します (:test1 は、モデルに関係のないフォーム フィールドです)。
Can't mass-assign protected attributes: test1
モデルに関係のないテキスト フィールドを送信していることが原因であることがわかりました。次のようなあらゆる種類の奇妙な構文を試しました。
User.new(params.require(:user).except(:test1))
そしてUser.new(params[:user].except(:test1))
無駄に。
オンラインでいくつかのソースを見つけましたが、except または delete メソッドを使用できると述べていますが、特に User.new() では、それを機能させることができないようです。
私は新しいものの外でもそれを試しました:
params.delete(:test1)
@user = User.new(params[:xref_ability])
また、最終的に作成時に追加の属性を読み取れるようにしたいので、except() または delete() がすべての問題を解決するとは思いません (機能した場合)。したがって、コントローラークラスとモデルクラスで attr_accessor :test1 を試しましたが、メソッドに属性を読み取る権限が与えられることを期待していましたが、成功しませんでした。
また、モデルの attr_accessible に追加しようとしたところ、エラーが発生しました。
unknown attribute: test1
他の提案はありますか?