[解決済み] Rails 4で、以前のバージョンのRailsでattr_accessibleを使用していた状況に遭遇した場合、Forbidden Attributes Errorが発生する。
2022-02-16 09:16:20
質問
最近Rails 4にアップグレードしたところ、以下のようなコードを使用して属性を更新してもうまくいかず、次のようなメッセージが表示されます。
ActiveModel::ForbiddenAttributes
というエラーが発生します。
@user.update_attributes(params[:user], :as => :admin)
ここで、Userはモデル内で以下のattr_accessibleの行を持っています。
attr_accessible :role_ids, :as =>admin
# or any attribute other than :role_ids contained within :user
Rails 4で同じ作業を行うにはどうすればよいでしょうか。
どのように解決するのですか?
Rails 4では strong_parameters gem がデフォルトで組み込まれています。
を呼び出す必要はありません。
:as => :admin
も必要ありません。
attr_accessible :user_attribute, :as => admin
をモデルで使用することができます。 その理由は、railsアプリはデフォルトでモデルのすべての属性に「セキュリティ」を持つようになったからです。 そのため
permit
にアクセスし、変更したい属性を指定します。
ここで必要なのは
permit
の間に
update_attributes
:
@user.update_attributes(params[:user], permit[:user_attribute])
とか、もっと正確に言うと
@user.update_attributes(params[:user].permit(:role_ids))
しかし、この一行で、どのユーザーでも
permit
テッドロールを使用します。 以下のような別のフィルターを通して、管理者やその他の希望するロールによるこのアクションへのアクセスのみを許可することを忘れないようにしなければなりません。
authorize! :update, @user, :message => 'Not authorized as an administrator.'
. .これは、認証と認可にDeviseとCanCanを使用している場合に有効です。
関連
-
[解決済み】bundle installが "Could not locate Gemfile "を返す。
-
[解決済み】修正方法:エラー:'<ファイル名>'にチェックアウトされたコミットがない fatal: コマンドプロンプトで "git add ." を入力するとファイルの追加に失敗する
-
[解決済み】bcrypt LoadError: Cannot load such file
-
[解決済み] Ruby/Rails の「フック」とは何ですか?
-
[解決済み] gemのインストールができない - gemネイティブ拡張の構築に失敗 - そのようなファイルをロードできない -- mkmf (LoadError)
-
[解決済み] heroku open - no app specified
-
[解決済み] RailsのRootディレクトリのパス?
-
[解決済み] Railsでpng画像を文字列形式で表示するには?
-
[解決済み] RubyとRailsの "Date.today "フォーマット
-
[解決済み] 未初期化の定数 "コントローラ名"
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Webpacker::Manifest::MissingEntryError【クローズド
-
[解決済み] erbでコメントを追加する最適な方法
-
[解決済み] Errno::EACCESS: パーミッションが拒否された @ dir_s_mkdir
-
[解決済み] nil:NilClass の未定義メソッド `each'... なぜ?
-
[解決済み] Herokuの問題 : あなたが探しているページは存在しません。
-
[解決済み] Railsです。gemを使った特定バージョンのライブラリのアンインストール
-
[解決済み] RVMでRubyのデフォルトバージョンを設定するには?
-
[解決済み] バリデーションなしで属性を更新する方法
-
[解決済み] Heroku: 既存のrailsアプリにseeds.rbをプッシュする方法?
-
[解決済み] 構文エラー "構文エラー、予期しない入力終了、keyword_endを期待 (SyntaxError)"