RoR入門第11回

教本のチュートリアルっぽいところをようやくすべて読了した。
感想を書いておこう。

画面からの入力値を格納するオブジェクトとActiveRecordのクラスが同じでいいの?

たとえば、日付を入力するときに年月日が別々の入力欄である場合。
たとえば、入力値に複雑な計算を加えてデータベースに格納する場合。
今までやってきたJavaの世界だとFormとDtoを分けてService層が画面に依存しないようにしたりするのだけれど。
再利用性を無視するという割り切り?
そこが割り切れない場合は画面用のModel(Form?)と保存用のModelの両方を作成するのがよいのかな。

ややこしい業務ロジックはどこに実装する?

ドメインモデルなりトランザクションスクリプトなり好きなものを選べばいいだけか。
でも何という名前のクラスにしてどこに格納するのが一般的なのかしら。
helper?

バリデーションのタイミングが微妙。

画面入力値のバリデーションはAction実行前にやってしまいたい。
教本だとModelに使っているActiveRecordのsaveメソッド実行時に実施されているが、それだと明らかに遅いだろう。
必須入力の画面入力値を加工してDBに格納する場合は加工より必須入力チェックの方が先のはずだ。
これは手動でvalidateメソッドを呼ぶということになるのかな。


ここからはRailsの詳説。
少し読み進めたが、Rubyのコアクラスに対してもかなりの拡張をしているようだ。
便利だが、これがないとプログラムできない体になりそうだ。
あと、ブロックとかPorcとかはもういちどおさらいしないといけない。
これがなんだかわからなかった。

hoge.map(&:fuga)