2021-09-13から1日間の記事一覧

Post.all.includes(:user).order(created_at: :desc)

includesメソッドとは? このメソッドはモデル同士の関連付けを事前に取得してN+1問題を解決してくれるメソッド。指定された関連付けが最小限のクエリ回数で読み込まれるようになる。 N+1問題って? ループ処理の中で、その都度SQLを発行してしまい、大量のS…

offset(rand(User.count)).first

offsetメソッドとは、特定のレコード位置から情報を取得するメソッド。 モデル.offset(取得開始位置) と書くことで、(取得開始位置)から情報をとってくることができる。 User.limit(5).offset(30) 上のコードは、30件目以降から5件ユーザーの情報をとって…

renderを使って複数回表示したい

Railsを使って、掲示板を作っている。 掲示板の掲示物を部分テンプレートを使って複数回表示させたい。 views/sharedの中に_board.html.erbを作成。これを複数回boards/index.html.erbの中で表示させる。 まずは、一回だけ表示できるかを確認する。 index.ht…

has_manyとbelongs_toの話

userとpostを結びつけたい場合、postはuserに紐付けられて、かつ、userがpostを複数持つ場合、 class User < ApplicationRecord has_many :posts, dependent: :destroy end class Post < ApplicationRecord belongs_to :user end と記入することで、紐付けら…

テーブルのデータをすべて消す

ユーザーのデータをseeds.rbを作って作りすぎてしまった。 rails c コンソールを開いて、 User.destroy_all これでテーブルのデータが全て消える。紐付けてあるデータも消えるので覚えておく。

Railsで日本標準時間にする

config/application.rbファイルのApplicationクラスの中にタイムゾーンの設定を追加する。 class Application < Rails::Application config.time_zone = 'Tokyo' end としてあげればOK!

未ログイン時にログインしてくださいを出す

ログイン状態の場合current_userを使用することができる。(sorceryのおかげ) application_controllerに書き加える。 class ApplicationController < ActionController::Base before_action :login_required private def login_required unless current_user …

Fakerを使ってダミーデータを大量に作ろう

すでにFakerはインストールしてあることを前提。 ユーザーのダミーデータを作成する。 db/seeds.rbにコードを記入 be20.times do |n| User.create!( last_name: Faker::Name.last_name, first_name: Faker::Name.first_name, email: Faker::Internet.unique.…

ダミーデータを作るFakerとは?

Fakerとはランダムでデータをいい感じに作ってくれるgemのこと。 準備 gem 'faker' をgemfileに追加して、terminalでbundleを実行するだけ! コンソールで練習 rails c -s Faker::Name.last_name とすると、名字がランダムで生成される。面白い。 10.times {…

seeds.rbとは?

seeds.rbとは、app/dbディレクトリにあるファイルで、レコードの作成に使うファイル。 レコードの作成を行う際に手作業で行う必要がなく、コマンド一つで大量のレコードを作成できる。 作成方法 seeds.rbにレコード作成処理を記述 rails db:seedをターミナル…

Rails テーブル名 変更

スペルミスによって、テーブル名が意図しないものになっていた。 boradsテーブル => boardsテーブルに変更する。 変更用のマイグレーションを作成。 $ rails g migration change_borads_to_boards マイグレーションの中身を作成 class ChangeBoradsToBoards …