Rails/Heroku開発のナレッジ1

暫く書いていなかったな。
最近凄く寒くなって、冬苦手だなと思い始めました。この前までは「冬好きです」と言ってたのに。。

さて、今年の6月にRailsとHerokuとの連携について発表させていただきましたが、その後色々やったので、続きとして幾つかナレッジを追記します!
今回はstrong parameterについて

  1. strong_parametersについて

これはRails4から標準の機能になります。以前githubActiveRecordのupdateメソッドで更新してはいけない項目まで更新できてしまういう問題がありました。3.2系でその対応策としてModelクラス内に「attr_accessible」を定義していました。
rails4からは、このModelでやっていたチェックを「strong parameter」を使ってControllerでやるようになりました。

この「strong parameter」を使うと更新対象となる項目を設定するようになります。


private
def update_params
params.require(:hoge.permit(:title,:description,:priority,:group_id,:status)
end

この機能はRails3でも試す事ができます。試すには以下のGemをGemfileに追加します。


#strong parameter
gem 'strong_parameters'

追加したら、「bundle install」を実行します。


>bundle install

追加したら、後は先ほど書いたような


private
def update_params
params.require(:hoge).permit(:title,:description,:priority,:status)
end
をcontrollerに定義して、update処理の時に


@hoge=Hoge.new
@hoge.update_job(update_params)
のように記載すればOKです。
これにより上の例でいうと「title, description, priority, status」以外の項目を更新しようとしてもupdate_paramsメソッドの中で更新対象から削除され、意図しない更新はされなくなります。