일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CSS
- springboot
- 인프런
- 자바
- 一日一つメソッド
- java
- 연습문제
- 건담베이스
- 일본어
- 반다이몰
- javascript
- C로 시작하는 컴퓨터 프로그래밍4판
- 디지몬
- jsp
- 건담
- Python
- nico
- メソッド
- html
- rails7
- ruby
- 비즈니스일본어
- vscode
- rails
- DART
- 日本語
- 単語
- Flutter
- Web
- Spring
- Today
- Total
AR삽질러
Rails 一日一つメソッド (Day11) whereメソッド 본문
Rails 一日一つメソッド (Day11) whereメソッド
whereメソッド
- RailsのActiveRecordでデータベースクエリを作成する。(Query Method)
- テーブル内の条件にコードを配列の形で取得することができるメソッド。
whereメソッド使い方
User.where("name = ?", "Arang")
- usersテーブルでnameが"Arang"のユーザを探す。
whereメソッドで条件を使う
User.where("age >= ? AND membership = ?", 18, "premium")
- ageが18以上で、membershipがpremiumのすべてのユーザを探す。
whereメソッドでHashを使う
User.where(email: "arang@example.com", active: true)
- emailが"arang@example.com"でありながら、活性化されているなユーザーを探す。
whereメソッドチェーンを使う
User.where(active: true).order(created_at: :desc)
- 活性化されているなユーザーを探し、ユーザーを生成時間の降順に並べる。
whereメソッド例題
- 管理者がユーザを検索して探す機能
userController.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
end
end
params[:search].present?
- ユーザが検索Formを入力し、フォームを提出したことを確認
- present?メソッドは、params[:search]が空でなく、値があるかどうかを検査。
@users = User.where("email LIKE ?", "%#(params[:search]}%")
- ユーザーが入力した検索語(params[:search])を含むすべてのメールアドレスを持つユーザーを見つけるためにwhereクエリを使用
- LIKE演算子は部分一致を検査
- %ワイルドカードは文字列のどの部分にも検索語が含まれることを意味する
@search_performed = true
- 検索が出来た時Flagをtrueに設定する。
@users = User.all
- 検索ワードが提供されていない場合は、すべてのユーザーをインポートするためにUser.allを使用
@search_performed = false
- 検索が出来なかった場合Flagをfalseに設定する。
index.html.erb
<!-- app/views/users/index.html.erb -->
<h1>登録されている Users</h1>
<% 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 %>
if @users.any?
- @usersが空いていない場合ユーザーlistを返す。
users.each do |user|
- @usersがユーザーを反復して情報を表紙する。
elsif @search_performed
- 検索機能が実行されているが、@usersが空いている場合"検索結果がありません。。"を返す。
form_with
- ヘルパーは検索フォームを作成し、GETメソッドを使用してusers_pathにリクエストを送信する。
- ユーザーはフォームにメールを入力し、検索ボタンをクリックして検索を実行できる。
https://github.com/designAR/rails_method_study/tree/day11_where
'Ruby > RubyOnRails-日本語' 카테고리의 다른 글
初めてのRuby on Rails ControllerからViewに、Model(3) (2) | 2023.12.31 |
---|---|
Rails 一日一つメソッド (Day11) + form_with, link_to, each, present?メソッド (0) | 2023.12.31 |
Rails 一日一つメソッド (Day10) before_actionメソッド (0) | 2023.12.30 |
Rails 一日一つメソッド (Day09) authenticateメソッド (0) | 2023.12.29 |
Rails 一日一つメソッド (Day08) has_secure_passwordメソッド (0) | 2023.12.28 |