👻

railsのtips

2023/04/17に公開

コントローラー作成する時のtips

$ rails g controller homes top

/*
app/controllersの中に、homes_contorller.rbと
app/views/homesの中に、top.html.erbが作成されている。
*/

上記のコマンドでは、コントローラ作成と同時に、必要なviewファイルの作成や記述の追加が可能になる。

また、Listsコントローラに定義するアクションでviewが必要ないアクション(create, update, destroy)は、余計なファイルが作成されるのを防ぐために、以下のように省略してかける。

$ rails g controller lists new index show edit

/*
/list/newや/list/index
*/

form_withヘルパーとは

Viewなどから呼び出す共通処理をまとめた「ヘルパーメソッド」というものがあり、form_withヘルパーもその1つであり、セキュリティ対策などが組み込まれた安全なHTMLのformタグを作成できる。

<%= form_with do |f| %>
<% end %>

/*
|f|はブロック変数といい、特定の範囲内で使用することができる、(do~end)
*/

マスアサイメント攻撃とストロングパラメーター

マスアサインメント攻撃は、不正なパラメーターの値を通じて、予期しないカラムに値を設定することができる脆弱性である。たとえば、フォームから送信されたすべてのパラメーターをまとめてモデルの属性に割り当てようとすると、意図しないカラムにも値が割り当てられてしまう可能性がある。

ストロングパラメータは、このような攻撃からアプリケーションを保護するために導入された仕組みである。ストロングパラメータを使用することで、明示的に許可されたパラメーターのみを取り扱うことができる。つまり、不正なパラメーターの値を通じて、予期しないカラムに値を設定することができなくなる。

ストロングパラメータは、Rails 4以降で導入された機能であり、Railsのコントローラーで使用することができる。具体的には、params.require(:モデル名).permit(:許可する属性1, :許可する属性2, ...)という形式で使用する。これにより、指定された属性のみが許可され、それ以外の属性は無視される。

Discussion