Ruby on Rails

安全なウェブサイトの作り方~失敗例~

安全なウェブサイトの作り方を読んだので、理解した内容を自分なりにまとめておきます。資料 上記は3章構成になっていてそれぞれ長めの内容なので、ここでは3章の『失敗例』について、Ruby on Rails ではどうするかについてをまとめます。 SQL インジェクシ…

安全なウェブサイトの作り方~設計、実装~

安全なウェブサイトの作り方を読んだので、理解した内容を自分なりにまとめておきます。資料 上記は3章構成になっていてそれぞれ長めの内容なので、ここでは1章の『ウェブアプリケーションのセキュリティ実装』の設計や実装レベルの解決や対策方法についてま…

Rails セキュリティ

Rails セキュリティガイド - Railsガイドを読んだので、理解した内容を自分なりにまとめておきます。 Web アプリケーションの脅威 セッション セッションハイジャック セッションストレージ cookie のローテション CookieStore セッションに対するリプレイ攻…

Ruby on Rails:テスト

モデルのテストを書く 関連付けを行っている場合のフィクスチャ Railsのテストランナー システムテスト ちょっと書いてみた assert_selector を完全一致で使う 参考 モデルのテストを書く テストを書くのは自分自身で def したメソッドがあるモデル。理由と…

Ruby on Rails:save と save! メソッドの違い

save と save! は、インスタンスを生成した後に使う。どちらもデータのバリデーション(データベースに保存する前に、データ自体の妥当性を検証する仕組み)と、データベースへの保存を行うメソッド。 def create @report = current_user.reports.new(report_p…

Ruby on Rails:ポリモーフィック関連付け

ポリモーフィック関連づけ ポリモーフィックなモデルを生成する 参考 下記のようなモデルを実装するとする。 上記は、bookモデルとreportモデルはそれぞれcommentモデルと関連があり(本と報告書に対してコメントする機能)、commentは共通モデルで対応する…

Ruby on Rails:belongs_to, has_many で関連付けを行う

ターゲットするER図 belongs_to, has_many で関連付けを行う 参考 ターゲットするER図 belongs_to, has_many で関連付けを行う 上記のER図において、『日報は投稿者しか更新削除できない』というようにしたい。そのためには日報にユーザ情報が必要なので、日…

Ruby on Rails:belongs_to, has_many で関連付けを行う

ターゲットするER図 belongs_to, has_many で関連付けを行う 参考 ターゲットするER図 belongs_to, has_many で関連付けを行う 上記のER図において、『日報は投稿者しか更新削除できない』というようにしたい。そのためには日報にユーザ情報が必要なので、日…

Ruby on Rails:N+1問題とは

N+1問題は、SQLクエリを大量に発行してしまう事象のことを言う。例えば下のようなWebサイトがあるとする。Webサイトのデータは、ユーザ情報のテーブルと、ユーザIDと画像を紐づけた画像テーブルの2つから構成される。 上記のサイトにアクセスすると、下記の…

Ruby on Rails:ActiveStorage で画像アップロード

Active Strorage 概要 Active Storage の環境構築 Active Storage のセットアップ パラメータに許可を与える ファイルをレコードに添付する ビューを設定する variant で画像を変形する 参考 Active Strorage 概要 Active Storageはクラウドストレージサービ…

パーフェクトRuby on Rails 読んでみた

part1:overview ルーティング情報ファイルについて Active Recordとは バリデーション(検証)とは コールバックとは ビューのレンダリング 参考 part1:overview ルーティング情報ファイルについて config/routes.rb でモデルに対して CRUD 操作を定義してい…

Ruby on Rails:devise gem で認証機能を導入する

devise gem 概要 devise gem の導入 ビュー構成変更 Strong Parameter設定 ユーザ一覧ページの追加 ユーザ詳細ページの追加 参考 devise gem 概要 devise は Warden に基づく Rails 用の柔軟な認証ソリューション。パスワードはハッシュしてデータベースに保…

Ruby on Rails:Rails の i18n

RailsのI18nとは Ruby on Rails におけるI18n 国際化とローカライズ Active Recordモデルの翻訳を使う 式展開で渡す 参考 RailsのI18nとは I18n は internationalization の略で、国際化・多言語化を意味する。 一般に、アプリケーションの国際化では、『国…