AR삽질러

Rails 一日一つメソッド (Day2) findメソッド 본문

Ruby/RubyOnRails-日本語

Rails 一日一つメソッド (Day2) findメソッド

아랑팡팡 2023. 12. 22. 23:14
728x90

 

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

 

 

 

728x90
반응형
LIST