1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

オリジナルアプリ制作過程 〜wants〜

Posted at

本日の進捗報告: Wantsアプリのリクエスト機能実装

1. ルーティングの設定

まず、config/routes.rb を更新しました。リクエストに関連するルートを設定し、requests#index をアプリのルートパスに設定しました。

Rails.application.routes.draw do
  resources :requests, only: [:index, :new, :create]
  devise_for :users
  root to: "requests#index"
end

2. リクエストコントローラーの実装

次に、リクエスト一覧と新規リクエスト投稿機能を app/controllers/requests_controller.rb で実装しました。リクエストの一覧表示、リクエスト作成フォームの表示、リクエストの作成処理を定義しました。

class RequestsController < ApplicationController
  def index
    @requests = Request.all
  end

  def new
    @request = Request.new
  end

  def create
    @request = Request.new(request_params)
    @request.user = current_user

    if @request.save
      redirect_to requests_path, notice: 'リクエストが作成されました。'
    else
      render :new
    end
  end

  private

  def request_params
    params.require(:request).permit(:title, :description, :category_id, :max_price, :min_price, :image, :shipping_charge_id)
  end
end

3. ユーザーモデルの更新

また、ユーザーモデル app/models/user.rb にバリデーションを追加し、リクエストとの関連付けを行いました。これにより、ユーザーがリクエストを作成できるようになっています。

class User < ApplicationRecord
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable
  validates :first_name, presence: true, format: { with: /\A[ぁ-んァ-ン一-龥々ー]/ }
  validates :last_name, presence: true, format: { with: /\A[ぁ-んァ-ン一-龥々ー]/ }
  validates :nickname, presence: true
  validates :password, format: {with: /\A(?=.*?[a-z])(?=.*?[\d])[a-z\d]+\z/i}

  validates :first_name_kana, presence: true, format: { with: /\A[ァ-ヶー-]+\z/ }
  validates :last_name_kana, presence: true, format: { with: /\A[ァ-ヶー-]+\z/ }
  validates :birthday, presence: true

  has_many :requests, dependent: :destroy
  has_many :products, dependent: :destroy
  has_many :question_response
  has_many :histories
end

4. 振り返り

今回の進捗では、リクエスト一覧と新規作成機能をスムーズに実装できました。今後は、ビューの調整やエラーハンドリングの改善に取り組む予定です。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?