https://storesinc.tech/conf/2025
STORES Tech Conf 2025 "What would You Do?" で行われるワークショップ「マスタリーのためのRails道場」用のリポジトリです。
このRailsアプリケーションは、お店の来店予約管理と注文管理を行うシステムです。 このお店のお客さんはログインせずに来店予約ができ、従業員はログインして予約管理・注文処理・決済を行えます。
- 各自のGitHubアカウントにこのリポジトリをフォークしてください
- 開始後60分間は環境構築ののち、アプリケーションの説明を読みながら課題に挑戦してください
- 60分を経過したらその時点での実装をPull Requestとして本体のリポジトリに投げてください
- 残り時間で各自の実装を眺めて感想を伝えたり、自分の実装を改善したり、参加者同士で議論するなど、自由に過ごしてください
このプロジェクトには以下の環境が必要です:
- Ruby 3.4.5 (.ruby-version で指定されています)
プロジェクトのルートディレクトリに .ruby-version ファイルがあるため、以下のような Ruby バージョン管理ツールを使用することをお勧めします:
注意: macOS や Linux にプリインストールされている Ruby は通常古いバージョンのため、このプロジェクトでは動作しません。
git clone <repository-url>
cd rails_dojo_wwyd
# Ruby バージョンが正しいことを確認
ruby -v # Ruby 3.4.5 であることを確認
bundle install
./bin/setup --skip-server
./bin/rails server- ログイン不要
- フォームを入力して予約を作成できます
http://127.0.0.1:3000/dashboard/reservations
- ログインが必要(README:ログイン情報参照)
- 来店予約機能で作成された予約情報と、開発用のseedデータを確認できます
- 予約詳細ページから注文作成ページに遷移できます
http://127.0.0.1:3000/dashboard/orders
- 予約情報を元に注文を作成できます
- 注文の作成自体は課題1となっているのでまだ動作しません
- 注文作成画面は予約詳細から遷移できます
注文情報の作成と決済を行う機能を Dashboard::OrdersController#create に実装してください。
- Orderレコードの作成
Reservation has_one Orderの関係であることに注意してくださいOrder#emailにはリクエストパラメータで指定されたReservation#emailの値を保存してくださいOrder#nameにはリクエストパラメータで指定されたItem#nameの値を保存してください
- 決済APIクライアント(
PaymentApiClient.execute)を呼び出し、Paymentレコードの作成Order has_one Paymentの関係であることに注意してくださいPaymentApiClient.executeの引数tokenにはリクエストパラメータparams[:order][:token]の値を設定してくださいPaymentApiClient.executeの引数amountにはリクエストパラメータで指定された商品の価格Item#priceの値を設定してください
- 予約ステータス(
Reservation#status)をpendingからcompletedに更新- すでに
completedである場合はエラーとしてください
- すでに
- 指定されたアイテムの在庫数(
Item#stock)を1減らす- 在庫が1未満であればエラーとしてください
- エラーが発生した場合はその情報を
flash.alert.nowに保持し、画面に表示できるようにする
正常系のみテストが用意されているので、参考にしてください。テストは ./bin/rails test で実行できます。
このアプリケーションをもっと良くするために、思いついた改善点があれば何でも取り組んでください。
- UserとItemはseedからのみ生成されます
- 決済APIは
PaymentApiClientクラスでダミー実装されています- 実際の決済処理は行われません
- Web APIのダミー実装なのでまれにタイムアウトすることまで模しています
seedで以下のユーザーが作成されます:
- 山田太郎:
[email protected]/railsdojo20251126 - 田中花子:
[email protected]/railsdojo20251126 - 佐藤次郎:
[email protected]/railsdojo20251126 - 鈴木三郎:
[email protected]/railsdojo20251126
- このアプリケーションはワークショップ用のため、本番環境での使用は想定していません