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 1 year has passed since last update.

default_scopeを使わずにorderメソッドでオブジェクトの並び順を変更する

Posted at

はじめに

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メソッドを使い、理解が深まりました。また、今後ソート機能について記事を書こうと思います。

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?