0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

rails 発展その6  n+1問題 HTTPリクエスト一覧とルーティングのコツ  ActiveRecord::Baseメソッド一覧

Last updated at Posted at 2019-11-09

重要情報と一覧情報が欲しかったので
その備忘録を書きます。

n+1問題

処理の都合上無制限にデータが増えて行ってしまう問題

includesメソッド

n+1問題対策でincludesメソッドがあります。指定された関連モデルをまとめて取得することで、
SQLの処理を減らすことができます

controller
# 例
    def index
      @items = Item.includes(:user)
    end
# これでitemテーブルに関連するuserテーブルまとめて取得しました。

HTTPの一覧

主に使われる物はこちら

メソッド 役割
get ウェブサイトを閲覧する際にはこのメソッドが使われる。
post サーバーに情報を送信するために使われる。
delete データを削除するために使われる。
patch データを更新するために使われる。 。
put patchと同じ役割を持っている。rails3から4になる形で使われなくなった。

他にも種類はあります。
又下記のような便利なメソッドがあります。

resourcesメソッド

Railsの基本となる7つのルーティングを自動で生成するメソッド

controlle
Rails.application.routes.draw do 
  resources :items                     #items_controllerに対してのresourcesメソッド
  resources :users, only: [:show]       #users_controllerに対してのresourcesメソッド
end

ルーティングのネスト

情報が二重に必要な場合このようなネストが必要です。

routes
Rails.application.routes.draw do
  resources :items do
    resources :comments, only: [:create]
  end
end
# これでitemの中にコメントのルーティング情報が追加されるようになります。

ActiveRecord::Baseメソッド

ActiveRecord::Base というクラスを継承して使用する。
Railsにデフォルトでインストールされている。
基本知識が増えれば随時更新予定

Item.all
#モデルからすべてのインスタンス取得

Item.new(name: "", text: "Hey")
#モデルに新規インスタンスを作成

item.save
#作成したインスタンスを保存

Item.create(name: "", text: "Hey")
#newメソッドとsaveメソッドを一気に行うことと同じ

Item.find(3)  #=> <Tweet id:1, name: "", text: "Hey" >
#モデルからidが3のデータをインスタンスとして取得 ※該当するものがない場合はエラーになる

Item.find_by(name: "")
#条件に合うデータをidの若い順に1つだけ取得 ※該当するものがない場合はnilを返す

Item.where(name: "")
#条件に合うデータを複数取得

Item.where(name: "").first_or_initialize
#whereメソッドとともに使用。
#検索した条件のレコードがあればそのレコードのインスタンスを返し、なければ新しくインスタンスを作るメソッドです。

Tweet.limit(10)
#モデルからidの若い順に10つのデータを取得

Tweet.order("created_at DESC") 
#データの作成日時が新しい順にソート。DESCは降順、ASCは昇順

item.destroy
#削除

item.update
#更新
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?