重要情報と一覧情報が欲しかったので
その備忘録を書きます。
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
# 更新