일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- rails
- Spring
- 건담베이스
- 비즈니스일본어
- springboot
- 반다이몰
- Flutter
- 인프런
- 연습문제
- CSS
- ruby
- rails7
- java
- 単語
- Web
- vscode
- 일본어
- 日本語
- C로 시작하는 컴퓨터 프로그래밍4판
- 一日一つメソッド
- jsp
- 디지몬
- 건담
- Python
- html
- nico
- メソッド
- DART
- javascript
- 자바
- Today
- Total
AR삽질러
Rails 一日一つメソッド (Day12) orderメソッド 본문
Rails 一日一つメソッド (Day12) orderメソッド
orderメソッドとは
- orderメソッドは、データベースから取得してきた値を並び変えることができるメソッド。
orderメソッド使用方法
1) 基本方法
- orderメソッドはActiveRecordクエリで結果の順番を指定する時に使う。
例)User.order(:create_at) : 作られた順番通り並べる。
Model名.order("並び替えたいカラム")
Model名.order(:並び替えたいカラム)
2) 複数のカラムに整列
- 複数のカラムを使用して並べ替えることができる。
例)User.order(:last_name,:first_name) - 姓(last_name)で先に並び、名前(first_name)で並べ替える。
3) 上り順及び下り順
- 基本的にオーダーは昇順(ASC)で並べ替える。
- 降順(DESC)で整列するには、カラム名の後にdescを追加する。
例:User.order(created_at::desc) - これはユーザーを最新の順に並べ替える。
モデル名.order("カラム名 DESC")
モデル名.order(カラム名: "DESC")
モデル名.order(カラム名: :DESC)
4) チェーンメソッド
- orderは、他のクエリメソッドと一緒にチェンニングできる。
例 ) User.where(active: true)。order(created_at:desc) - アクティブなユーザーを最新の順に並べ替える。
users_controller.rb
class UsersController < ApplicationController
def index
if params[:search].present?
@users = User.where("email LIKE ?", "%#{params[:search]}%")
@search_performed = true
else
@users = User.all
@search_performed = false
end
case params[:sort_by]
when 'created_at'
@users = @users.order(created_at: :desc)
when 'name'
@users = @users.order(:name)
end
@search_performed = params[:search].present?
end
end
params[:sort_by].present?
- パラメータは存在する場合、メール アドレスの部分一致検索を実行する。
- 検索が実行されたかどうかは@search_performed変数に保存される。
@search_performed
- ユーザーが選んだ結果が :sort_by に保存されListを並べる。
create_at
- created_atを選択すると、ユーザー生成時間に応じて降順に並べ替える。
name
- nameを選択すると、ユーザーを名前に従って昇順に並べ替える。
index.html.erb
<!-- app/views/users/index.html.erb -->
<h1>登録されている Users</h1>
<%= form_with(url: users_path, method: :get, local: true) do |form| %>
<%= form.label :sort_by, "整列 基準:" %>
<%= form.select :sort_by, options_for_select([['生まれ順', 'created_at'], ['名前順', 'name']]), include_blank: true %>
<%= form.submit "整列" %>
<% end %>
<% if @users.any? %>
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<% @users.each do |user| %>
<tr>
<td><%= user.id %></td>
<td><%= user.name %></td>
<td><%= user.email %></td>
<td>
<%= link_to '修正', edit_user_path(user), class: 'action-button' %><br>
<%= button_to '削除', user_path(user), method: :delete, class: 'action-button' %>
</td>
</tr>
<% end %>
</tbody>
</table>
<% elsif @search_performed %>
<p>検索結果がありません。。</p>
<% end %>
<%= form_with(url: users_path, method: :get, local: true) do |form| %>
<div class="search-field">
<%= form.label :search, "ユーザー検索(email):" %>
<%= form.text_field :search, value: params[:search] %>
<%= form.submit "検索", class: 'action-button' %>
</div>
<% end %>
<br>
<%= link_to 'main', root_path %>
https://github.com/designAR/rails_method_study/tree/day12_order
'Ruby > RubyOnRails-日本語' 카테고리의 다른 글
Rails 一日一つメソッド (Day14) redirect_toメソッド (0) | 2024.01.03 |
---|---|
Rails 一日一つメソッド (Day13) require、permitメソッド (0) | 2024.01.02 |
初めてのRuby on Rails ミニQ&Aサイト開発 - 環境構築(1) (0) | 2023.12.31 |
初めてのRuby on Rails ミニQ&Aサイト開発 (0) (0) | 2023.12.31 |
初めてのRuby on Rails データベースの確認、操作、表紙(4) (1) | 2023.12.31 |