- ブランド一覧(名前のみでよい)を表示する
- 名前はリンクになっており、下に記すブランドの店舗一覧ページに遷移する
- ブランドの店舗一覧ページ
/aqua
,/tvb
のようにブランドごとに固有のパスとする- パスは管理画面でブランドを新規に作成するときに管理者が入力する
- ブランド作成後のパスの変更は不可
- パスは管理画面でブランドを新規に作成するときに管理者が入力する
- そのブランドの店舗一覧(名前のみでよい)を表示する
- 店舗の並び順は管理画面から変更可能
- 特権管理者と一般管理者(後述)しかアクセスできない
- 特権管理者
- 1名のみでユーザ名
admin
、パスワードUMtDj4ZBv%&d@Tzh
で認証を行う - 全ての操作が行える
- 1名のみでユーザ名
- 一般管理者
- 特権管理者がユーザ名とパスワードを指定して作成する
- そのユーザ名とパスワードで認証を行う
- ブランドの新規作成と店舗の並び順の変更のみを行える
- 特権管理者がユーザ名とパスワードを指定して作成する
環境: rbenv
$ cd your-project-path
$ mv config/database.default config/database.yml
$ bin/rails db:create
$ bin/rails db:migrate
$ bin/rails db:seed_fu
$ bin/rails s
環境: Docker
$ cd your-project-path
$ mv config/database.default config/database.yml
$ docker-compose build
$ docker-compose run web bundle exec rails db:create
$ docker-compose run web bundle exec rails db:migrate
$ docker-compose run web bundle exec rails db:seed_fu
$ docker-compose up
- id: admin
- password: UMtDj4ZBv%&d@Tzh
- Rubocopでコーディング規約に遵守したコードベースになるようにした
- CircleCIでRubocopのチェック、テストの実行ができるようにしている
- 複数人体制になれば必ずfeatureブランチを切りPull Requestし、コードレビューを経てmasterにマージすることを想定している
- コントローラにindex, show, new, edit, create, update, destory以外のアクションは極力使わない
- RESTに関係ないアクションは極力生やさないようにしている
- いわゆるDHHのコントローラの書き方(参考: https://postd.cc/how-dhh-organizes-his-rails-controllers/)
- 設計パターン
- Skinny Controller, Fat Modelが基本
- 今回は小規模な仕様なので使わなかったがモデルが太るのならDecoratorを使用する
- form object(ActiveModelをincludeしたクラス)を使用してファットモデルには対応する
- サービスクラスを使うのはあまり評判が良くないので避けたい
- モデルとコントローラ間の中間層としてサービスクラスが必要ならサービスの名前の付け方、規約を曖昧にせず使う