Rails 一日一つメソッド (Day2) findメソッド
Rails 一日一つメソッド (Day2) findメソッド
Active Recordメソッドとは
- Active Recordライブラリに含まれでいるメソッドを意味し、RailsのORM(Object-Relational Mapping)SystemでDatabaseと相互作業するRubyObjectを提供する。
- Active RecordによってSQLを直接作成しなくてもDabaBaseRecordを生成、検索、修正、削除ができる。
主なActive Recordメソッド
1. CRUD作業
create | 作成 | where | 条件に合うレコード 検索 |
find | IDを検索 | update | Recordの属性Update |
find_by | 与えられた条件に合う最初のレコード 検索 | destroy | Record削除 |
2. 関係管理
has_many | モデル間の関係定義 |
belongs_to | |
has_one | |
has_and_belongs_to_many |
3. 検証
validates | Modelの属性に対する有効性検証ルールの定義 |
4. CallBack
before_save | レコードのライフサイクル中に特定の条件で呼び出されるメソッド |
after_create |
5. 集計
count | レコードの集計情報検索 |
sum | |
average | |
minimum | |
maximum |
等々
findメソッドとは
- 'find'メソッドはRudy on Railsで特定のIDを探す時に使うメソッド。
構文
Model.find(id)
与えられたRecordをDabaBaseから探す。
return : 一致するRecordをオブジェクトに返す。
例)User.find(1) : usersテーブルからIDが1のユーザーを探す。
もしIDに該当するRecordがない場合、'ActiveRecord::RecordNotFound' 例外を発生する。
1. RailsConsoleでUser作成
irb(main):006> user = User.find(1)
User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
=>
#<User:0x00000265cb549c40
...
irb(main):007> puts user.name
Arang
=> nil
irb(main):008> puts user.email
arang@example.com
=> nil
2. users_controller.rb
class UsersController < ApplicationController
def index
@users = User.all
end
def show
@user = User.find(params[:id])
end
end
showアクション
- @user = User.find(params[:id]) : users/id パラメータを使ってUserモデルでIDを探す。
- User.find : findメソッドは与えられたIDと一致するUserオブジェクトをDataBaseから探す。
- params[:id] : paramsはControllerが受けるパラメータを持っている ヘッシュ
3. routes.rb
Rails.application.routes.draw do
get 'users', to: 'users#index'
get 'users/:id', to: 'users#show', as: 'user'
end
users/:id URLパタンをUsersControllerのShowアクションと紐付ける。
:id は動的セグメントで、URLの部分がparams[:id] でコントローラに配信される。
as: 'user' : Routeに対するURLヘルパーメソッドの名前を指定し、これでuser_pathなどのヘルパーメソッドを使うことができる。
4. show.html.erb
<h1>User Details</h1>
<p>
<strong>ID:</strong>
<%= @user.id %>
</p>
<p>
<strong>Name:</strong>
<%= @user.name %>
</p>
<p>
<strong>Email:</strong>
<%= @user.email %>
</p>
https://github.com/designAR/rails_method_study/tree/day01
GitHub - designAR/rails_method_study
Contribute to designAR/rails_method_study development by creating an account on GitHub.
github.com