ラベル Ruby on Rails3で出納帳を作ろう の投稿を表示しています。 すべての投稿を表示
ラベル Ruby on Rails3で出納帳を作ろう の投稿を表示しています。 すべての投稿を表示

2010年12月16日木曜日

出納帳できちゃいました

講座を書くのも早々に飽きて出納帳が完成してしまいました。
もともと「これまでのRails」についての機能を確認しながら書いていたに過ぎないので、あまりRails3の有効な情報にはならなかったことでしょう。しかし一旦書き始めると、ネットで調べながらRails3の強力な機能を堪能することができました。

  • scopeすごい。joinsとエイリアスされたmergeメソッドで究極のDSL&DRY
  • Rackから輸入された経路の記述がわかりやすい。でも動かなかった。
  • アプリケーションに対して wget すると500が返ってくる。 template is missing …? haml 関係っぽい。
  • でもhaml便利。
とりあえずこれからは git や他のプラグインなどを導入して本格的に Rails3 アプリケーションを組み立てていきます。目下の目標は…とりあえず将棋関連ですかねぇ。


-- 押してねっ→BlogPeople「趣味の世界」ブログランキング --

2010年12月14日火曜日

Ruby on Rails3で出納帳を作ろう・その伍

だんだん記事が長くなっているので自重せねばなりませんな。

前回scaffold が自動生成した CategoriesController をフルスクラッチから書き直し、RESTという考え方や DRY の実践、また、Rails3で追加された新機能を実際に使用したり、モデルからのデータの取り出しや保存、更新、削除などの CRUD を行ないました。

しかし、大きな問題点があります。

  • 名前が空のカテゴリを作成できてしまう
  • 同じ名前のカテゴリをいくつも作成できてしまう

これはRails3であれば、たった一行で防止することができます。ビュー、コントローラに続いて、今回はモデルについて掘り下げてみましょう。



Ruby on Rails3で出納帳を作ろう・その肆

前回scaffold で作成した Category の View 部分(app/views/categories/ ディレクトリ以下)を、一定の水準まで日本語化することができました。しかし、新規作成したときや編集・保存したときの「Category was successfully created/updated.」などのメッセージは、 View のどこにもありませんでした。また、新規作成・編集したときに、さまざまな情報を管理するならまだしも、 name カラムしか持たないレコードをいちいち確認(表示)するのは冗長です。新規作成・編集したあとは、すぐにリスト表示に戻ってもらえないものでしょうか?

これらを解決するのは MVC (Model View Controller) のうち Controller の役割です。 scaffold は、モデル・ビュー・コントローラのすべての土台(と他にもいろいろ)を自動生成してくれるので、これらの要望はわずかな修正をするだけで実現させることができます。

では、いつものようにサーバを起動して作業していきましょう。

$ cd $(PATH_TO_WORK_DIR)/receipt
$ ./script/rails s
=> Booting WEBrick
=> Rails 3.0.3 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2010-12-14 11:34:13] INFO  WEBrick 1.3.1
[2010-12-14 11:34:13] INFO  ruby 1.8.7 (2010-06-23) [i686-linux]
[2010-12-14 11:34:18] INFO  WEBrick::HTTPServer#start: pid=9997 port=3000



Ruby on Rails3で出納帳を作ろう・その参

前回scaffold を使ってレコードの CRUD インターフェイスを実現させるところまで行きました。しかし、不満を覚えた人も多いのではないでしょうか。例えば…
  • 英語じゃん
  • 作成したあとにいちいち Back するのが面倒くさいじゃん
今回はまず、日本語化してみましょう。 MVC (Model View Controller) のうち View を扱っていきます。



2010年12月13日月曜日

Ruby on Rails3で出納帳を作ろう・その弍

前回はRails3を使ってアプリケーションを新規に作成(rails new receipt)し、バンドル(bundle)するところまでで終わってしまいました。今回はデータベース(SQLite3を採用)の設計から scaffold という便利な機能を使って CRUD (Create Read Update Delete) のインターフェイスを見る、いじるところまで行くつもりです。

必要になりそうなテーブルは:
  • Receipts: 日付と時刻・月(暗黙的参照: Accounts)・分類(参照: Categories)・概要・詳細(無記入可)・収支
  • Categories: 名前
  • Accounts: 月(ユニーク)・金額
こんなところでしょうか。

流れとしては:
  1. (自動)今月のベースとなる0円のAccounts行を作成。
  2. Categories行をひとつ以上作成。
  3. 収支に応じてReceipts行を作成していく。
  4. (自動)Receiptsをリスト表示するときは、今月分のAccounts行からReceiptsの差分を表示。
  5. (自動)月が変わったらその月のAccounts行を作成し、先月のAccountsおよびReceiptsのsumを保存。
  6. 基本的に2から5を繰り返す。
  7. 先月以前のReceipts行が削除された場合、変化した計算結果をその月以降のAccountsに適用する。
おおむねこんな感じですか。まぁ…はっきり言って雑ですね。RDBMSの特性を真に活かしきれていない気がしますので、「こういう構造のほうが楽ですよ」という意見などあればぜひ教えていただきたいです。

それにしても、こうして書いてみるとデータベースに慣れていない人には何やら難解そうに見えます。ボク自身にも難しそうに見えるというか、よほど集中しないと何が書いてあるのか意味がわかりません。が、Railsでは直感的に作業ができる上にコード量も驚くほど少なく済むので、多分ヒマな人なら一日かからずに作り終えることができるでしょう。実際、この講座に書いてあるのは文章量こそ多かれど実際にタイプするのはその10分の1以下のはずです。

では、まずはデータベースおよびテーブルの作成からですね。