空飛ぶITコンサルタント

中小企業診断士が「AI」「パン」「補助金」について語ります

そろそろ開発3 strong_parametersで大いにハマる

_IGP0035 1
甲子園での日ハム阪神戦の始まりから終わりまでずっと大ハマりしてしまったことをメモ。Rails4恐るべし。

この開発はRails3で途中まで作っていたモジュールを参考にしているので、
Rails4の新機能にはついていけないわけです。で早速ハマり。

1.エラーが出ます。
ActiveModel::ForbiddenAttributesError

2.答えはstrong_parameters
Rails3時代は、更新したいmodelのファイルに、更新したいカラムを1つづつ記します。
Rails4は、controllerのPrivateメソッドに記述するようで...仕組みが分からん。
例)nitihamuというエンティティにINSERTしたい場合。
nichihamus_controller.rb

#@hamu = Nichihakm.new(params[:nichihamu]) これではNG、
@hamu = Nichihamu.new nichihamu_params

private
def nichihamu_params
params.require(:nichihamu).permit(:column1, :column2,:column3)
end
このように2つ注意点がある。
・画面からパラメータを受け渡ししたいエンティティとカラムを、controllerのprivateにメソッドで定義しないとならないのです。
・内部変数に格納する際のお作法も変える必要があります。

企業であれば、「当たり前だ馬鹿」となるような上記のお作法も、個人でちょっと試してみたい私のような英語が不自由なRails初心者は大いにハマるものです。トホホ。