はじめに
default_scopeについて調べていると、「default_scopeは使うな」「default_scopeは非推奨」というワードが目に入りました。
今回はdefault_scopeを使わずに、orderメソッドでオブジェクトを新しいものから古い順に並び替えます。
default_scope
models/post.rb
class Post < ApplicationRecord
belongs_to :user
default_scope -> { order(created_at: :desc) }
validates :user_id, presence: true
end
posts_controller.rb
def index
@posts = Post.all
end
posts/index.html.haml
%ul
- @posts.each do |post|
%li
= post.title
= post.created_at
新しいものから古い順に表示されます。
orderメソッド
models/post.rb
class Post < ApplicationRecord
belongs_to :user
validates :user_id, presence: true
end
default_scopeの箇所を削除します。古いものから新しい順に表示されます。
posts_controller.rb
def index
@posts = Post.all.order(created_at: "DESC")
end
新しいものから古い順に表示されるのを確認しました。
あとがき
初めてorderメソッドを使い、理解が深まりました。また、今後ソート機能について記事を書こうと思います。