前回はRails3を使ってアプリケーションを新規に作成(
rails new receipt)し、バンドル(
bundle)するところまでで終わってしまいました。今回はデータベース(SQLite3を採用)の設計から
scaffold という便利な機能を使って CRUD (
Create
Read
Update
Delete) のインターフェイスを見る、いじるところまで行くつもりです。
必要になりそうなテーブルは:
- Receipts: 日付と時刻・月(暗黙的参照: Accounts)・分類(参照: Categories)・概要・詳細(無記入可)・収支
- Categories: 名前
- Accounts: 月(ユニーク)・金額
こんなところでしょうか。
流れとしては:
- (自動)今月のベースとなる0円のAccounts行を作成。
- Categories行をひとつ以上作成。
- 収支に応じてReceipts行を作成していく。
- (自動)Receiptsをリスト表示するときは、今月分のAccounts行からReceiptsの差分を表示。
- (自動)月が変わったらその月のAccounts行を作成し、先月のAccountsおよびReceiptsのsumを保存。
- 基本的に2から5を繰り返す。
- 先月以前のReceipts行が削除された場合、変化した計算結果をその月以降のAccountsに適用する。
おおむねこんな感じですか。まぁ…はっきり言って雑ですね。RDBMSの特性を真に活かしきれていない気がしますので、「こういう構造のほうが楽ですよ」という意見などあればぜひ教えていただきたいです。
それにしても、こうして書いてみるとデータベースに慣れていない人には何やら難解そうに見えます。
ボク自身にも難しそうに見えるというか、
よほど集中しないと何が書いてあるのか意味がわかりません。が、Railsでは直感的に作業ができる上にコード量も驚くほど少なく済むので、多分ヒマな人なら一日かからずに作り終えることができるでしょう。実際、この講座に書いてあるのは文章量こそ多かれど実際にタイプするのはその10分の1以下のはずです。
では、まずはデータベースおよびテーブルの作成からですね。