先日見つけた↑のチュートリアルをやってみました。Grailsのバージョンが0.3.1なので、現在のバージョンとは多少違う部分もありましたが問題なく試すことができました。

こんな感じのチュートリアル

ランニングの競技会のと参加者を管理するアプリケーションを作成する。
ドメインクラスの作成
-> 動的scaffoldingで生成したビューでドメインクラスのconstraintとかをいじる
-> 静的scaffoldingで生成したビューとコントローラをいじる -> 検索機能の追加
-> 認証とアクセス制御を追加する(管理者と一般ユーザ) -> UIのカスタマイズ -> テスト

今回学んだこと

  static constraint = {
    startDateTime(validator:{return (it > new Date())}) // クロージャがfalseを返すとエラー
  }
  • バリデーションエラーメッセージのカスタマイズ方法
  • 検索方法
  • beforeInterceptorを使った認証
  • クロージャを指定する演算子(&)
class RaceController{
    def beforeInterceptor = [action:this.&auth, except:'search'] // &authはauthというクロージャを取り出す
}
  • 認証後にリクエストされたURLに転送する方法
  • SQLのログ出力する方法
environments {
	development {
		dataSource {
			dbCreate = "create-drop" // one of 'create', 'create-drop','update'
			url = "jdbc:hsqldb:mem:devDB"
			logSql = true
		}
	}
	(省略)
}

まだわかっていないこと

テスト全般

  1. DBにデータを一括投入する方法があるか(DBUnitを使えばいいのか?)
  2. Canoo Web Testの使い方

現在のバージョンとは違っていること

  • ドメインクラスに必須ではない項目を指定するために、以下の様なoptionalというプロパティを記述していますが、これは今はないようです。constraintに書く?
  • 当時は環境ごとのデータソースの設定を、個別のファイルDevelopmentDataSource.groovyに記述していたようですが、現在はDataSource.groovyになります。