Skip to content

Instantly share code, notes, and snippets.

@seratch
Created May 4, 2016 02:41
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save seratch/dd0314f4c9d74f9f9cf344c1db4bdc70 to your computer and use it in GitHub Desktop.
Save seratch/dd0314f4c9d74f9f9cf344c1db4bdc70 to your computer and use it in GitHub Desktop.
>カスタムクラスをモデルの型として利用したい
そうですね。標準の ParamType 以外の場合はこんな感じで定義してやります。
このサンプル例の password パラメータは plain で受け取って hash にして保存しているサンプルです。
https://github.com/skinny-framework/skinny-framework/blob/2.0.8/example/src/main/scala/controller/ProgrammersController.scala#L103-L107
TypeConverter は Scalatra の仕様を踏襲して(というか 1.x はこのレイヤーは Scalatra だったので)そうなっているのですが params.getAs[Price]("price") とかやろうとすると必要になるという関係です。
https://github.com/skinny-framework/skinny-micro/blob/1.0.4/micro/src/main/scala/skinny/micro/implicits/SkinnyMicroParamsImplicits.scala#L18
https://github.com/skinny-framework/skinny-framework/blob/2.0.8/example/src/main/scala/model/PlainPassword.scala#L13
>ただ、生成されたControllerでやってんのかなぁと思ったのだけど、なんか見当たらないというかどこかわからない。
これの CompaniesController が Resource の継承ではなくベタに書いているサンプルです。
https://github.com/skinny-framework/skinny-framework-example
SkinnyResource は実処理は Actions に書かれていてそれを Routes でルーティングに紐付けているという形です。
http://skinny-framework.org/documentation/controller-and-routes.html#skinnyresource
もしルーティングだけ独自のやり方をしたければ Actions だけ継承するようにして Routes のところは Controllers.scala で書くなりすれば OK です。
controller の処理内容を少しだけ変えたい場合はテンプレートメソッドパターン的に必要なところだけ override してもらえればよいです。
https://github.com/skinny-framework/skinny-framework/blob/master/framework/src/main/scala/skinny/controller/SkinnyResourceActions.scala
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment