本日の進捗報告: 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. 振り返り
今回の進捗では、リクエスト一覧と新規作成機能をスムーズに実装できました。今後は、ビューの調整やエラーハンドリングの改善に取り組む予定です。