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?

Ruby on Railsの自分用覚書

Last updated at Posted at 2024-10-25

1. コントローラ(Controllers)

app/controllers/:リクエストの処理とモデル・ビューの連携を担う。

例1: 基本的なCRUDアクション

class UsersController < ApplicationController
  def index
    @users = User.all
  end

  def show
    @user = User.find(params[:id])
  end

  def new
    @user = User.new
  end

  def create
    @user = User.new(user_params)
    if @user.save
      redirect_to @user
    else
      render :new
    end
  end

  def edit
    @user = User.find(params[:id])
  end

  def update
    @user = User.find(params[:id])
    if @user.update(user_params)
      redirect_to @user
    else
      render :edit
    end
  end

  def destroy
    @user = User.find(params[:id])
    @user.destroy
    redirect_to users_path
  end

  private

  def user_params
    params.require(:user).permit(:name, :email)
  end
end

例2: 非同期リクエストを処理するAjax対応アクション

def toggle_active
  @user = User.find(params[:id])
  @user.update(active: !@user.active)
  respond_to do |format|
    format.html { redirect_to users_path }
    format.js   # toggle_active.js.erbを呼び出す
  end
end

2. モデル(Models)

app/models/:データベースとのやりとりを定義する。

例1: バリデーション

class User < ApplicationRecord
  validates :name, presence: true
  validates :email, presence: true, uniqueness: true
end

例2: コールバック

class User < ApplicationRecord
  before_save :capitalize_name

  private

  def capitalize_name
    self.name = name.capitalize
  end
end

3. ビュー(Views)

app/views/:ユーザーにデータを表示する。

例1: 部分テンプレート
app/views/users/_user.html.erb

<li><%= user.name %> - <%= user.email %></li>

app/views/users/index.html.erb

<h1>Users List</h1>
<ul>
  <%= render @users %>  <!-- 部分テンプレートの呼び出し -->
</ul>

例2: Ajaxでの部分更新
app/views/users/toggle_active.js.erb

$("#user_<%= @user.id %>").toggleClass("active");

4. ルーティング設定(Routes)

config/routes.rb:ルーティングの定義。

例1: 基本的なRESTfulルート

Rails.application.routes.draw do
  resources :users
end

例2: カスタムアクション

Rails.application.routes.draw do
  resources :users do
    member do
      patch :toggle_active
    end
  end
end

5. マイグレーション(Migrations)

db/migrate/:データベースの構造を管理。

例1: カラム追加のマイグレーション

rails generate migration AddAgeToUsers age:integer

生成されるファイル:

class AddAgeToUsers < ActiveRecord::Migration[6.0]
  def change
    add_column :users, :age, :integer
  end
end

例2: インデックスの追加

rails generate migration AddIndexToUsersEmail

生成されるファイル:

class AddIndexToUsersEmail < ActiveRecord::Migration[6.0]
  def change
    add_index :users, :email, unique: true
  end
end

7. 設定ファイル(Configurations)

config/:環境ごとの設定を管理。

例1: ログレベルの設定

# config/environments/development.rb
Rails.application.configure do
  config.log_level = :debug
end

例2: キャッシュ設定

# config/environments/production.rb
Rails.application.configure do
  config.cache_store = :memory_store, { size: 64.megabytes }
end

9. ヘルパー(Helpers)

app/helpers/:ビューで共通的に利用するメソッドを定義する。

例1: 日付のフォーマット

module UsersHelper
  def formatted_date(date)
    date.strftime("%Y年%m月%d日")
  end
end

例2: ステータスの表示

module UsersHelper
  def user_status(user)
    user.active? ? "Active" : "Inactive"
  end
end

13. Gemfile

プロジェクトルート:Gemの依存関係を管理する。

例1: 開発環境と本番環境で異なるGem

group :development do
  gem 'pry'
end

group :production do
  gem 'pg'
end

例2: 特定バージョンを指定

gem 'rails', '~> 6.1.4'
gem 'devise', '~> 4.7'

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?