2022-01-16から1日間の記事一覧

content_for

content_forとは 各ページごとにタイトルを変更したい場合に使用 コンテンツを名前付きのyieldブロックとしてレイアウトに挿入できる ヘルパーメソッドの作成 app/helpers/application_helper.rb def page_title(page_title = '') base_title = 'Ruby on Rai…

ルーティングのネスト

ネストをすると関係性のあるもののid情報が取得できる Rails.application.routes.draw do resources :tweets do resources :comments, only: [:create] end end 上記のルーティングで作成されるURLは/tweets/id/commentsになる このコメントは2番のツイート…

carrierwave

carrierwaveとは、画像アップロード用ライブラリ 導入 gem 'carrierwave' アップローダーの作成 bundle exec rails g uploader BoardImage 生成されたアップローダーに以下記述 class BoardImageUploader < CarrierWave::Uploader::Base def store_dir "uplo…

マイグレーションのロールバック

1つ前のマイグレーションをロールバック bin/rails db:rollback 複数のマイグレーションをロールバック bin/rails db:rollback STEP=3 この場合は最後に行った3つがロールバックされる ロールバックと再マイグレーションを一度に実行 bin/rails db:migrate:r…

データベースのリセット

データベースのリセットには、db:resetとdb:migrate:resetがある db:migrate:resetのほうがすべてをやり直してくれるのでおすすめ 詳しく書くと、db:resetはスキーマファイル ( db/schema.rb ) をもとにDB作成するので、マイグレーションファイルを編集して…

ストロングパラメーター

ストロングパラメーターとは コントローラーでパラメータを送る際に主に利用される仕組み 受け付けたパラメータが、安全かどうか検証して安全ではないデータの登録、更新を防いでくれる params.require(:user).permit(:nickname, :email, :password) 上記の…

formヘルパー

formヘルパーとは Railsの便利なメソッドのうちの一つがformヘルパーで、form_for, form_tag, form_with などがある ポイント action属性 入力したものをどのサーバーに送るか指定したもの input要素 サーバーに送信する値。selectやtextareaがある input要…

日時のフォーマットについて

問題 世界標準で日時が表示される 解決法 タイムゾーンを日本時間に設定 config/application.rb module TimeFormatSandbox class Application < Rails::Application # ... # タイムゾーンを日本時間に設定 config.time_zone = 'Asia/Tokyo' end end 上記の記…

renderメソッド オプション

コレクションオプション 一覧表示をする際などに、eachを使用するところを、コレクションオプションを使うことでパフォーマンスを上げることができる eachを使った場合 コントローラー def index @users = User.all end ビュー <% @users.each do |user| %> <tr> <td></td></tr>…

N+1問題

N+1問題について 何度もSQLが発行されて、パフォーマンスが低下すること N+1について詳しく ownersテーブルとcatsテーブルの2つがあるとする すべてのownersのcats一覧を表示する場合、まずallメソッドですべてのownersを取得する、その後上記のようにview…

シードファイル

シードファイルについて 最低限のデータを投入できるファイル 導入 db/seeds.rbの中に処理を記述 その後、rails db:seedを打ち込み事で、ファイルの内容が実行され初期データを投入できる

アソシエーション

アソシエーションとは どれが誰の投稿なのかを関連付けるもの アソシエーションを利用すると複数のテーブルにまたがるデータ操作もより直感的に利用できる twitterを例にすると、1ユーザー(userテーブル)に対し、複数ツイート(tweetテーブル)が結びつい…

アソシエーション

アソシエーションとは どれが誰の投稿なのかを関連付けるもの アソシエーションを利用すると複数のテーブルにまたがるデータ操作もより直感的に利用できる twitterを例にすると、1ユーザー(userテーブル)に対し、複数ツイート(tweetテーブル)が結びつい…

アソシエーション

アソシエーションとは どれが誰の投稿なのかを関連付けるもの アソシエーションを利用すると複数のテーブルにまたがるデータ操作もより直感的に利用できる twitterを例にすると、1ユーザー(userテーブル)に対し、複数ツイート(tweetテーブル)が結びつい…