Orderメソッド
orderメソッド
順番に並べる。並び方を決めるメソッド
インスタンス = モデル名.order("並び替えの基準となるカラム名 並び順")
並び順について
ASC(昇順): 古いものから新しい順番。古いものが上で新しいものが下になる。
*ABCじゃないので注意
DESC(降順): ASCの逆
*DEFCじゃないので注意
例
def index @tweets = Tweet.includes(:user).order("created_at DESC") end
def index
@items = Item.includes(:corporation).order('created_at DESC')
end
N+1問題(アソシエーション)
N+1問題とは
アソシエーションでtweetとuserが結びついているとする。
tweetの情報をとって来る場合、userの情報も探して来る必要がある。そのためtweetの情報を持って来るとは別でuserはuserでtweetに紐付いているuser情報を持って来る必要があり、データベースへのアクセス回数が多くなってしまう。そのためアプリのパフォーマンス低下。
解決方法
includeメソッドを使う。
これでtweetとuser1回で持って来れる。
includeに.allは含まれているのでall必要ない。
情報処理が多い場合だから使う場所はindexだけで大丈夫だと思う。
例)
def index @tweets = Tweet.includes(:user) end
#includeしなくてもエラーは起きないため、実感しずらい。
ユーザー機能(devise)の作成
deviseのinstall
#Gemfileに記述
gem 'devise'
ターミナル
% bundle install
#Userモデルを作成
rails g devise user
#テーブル作成
マイグレーションファイルにカラムを記述し、rails db:migrate
#devise用のビューを作成
|
#deviseのコントローラーは操作できないため作らない。
#deviseに対してのコントローラーの記述はapplication_controller.rb内に記述