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