Railsで複数モデルを扱う巨大フォームで幸せになれる「ActivePresenter」プラグイン

Railsで複数モデルを扱う巨大フォームを作るときって皆さんどうしてますか?会員の属性、プロフィール管理周りで良く発生しますね。標準だとモデル単位のエラーだったり、関連モデルはエラーの有無しか拾えなかったり。


id:ursmさんのBLOGで良さげなプラグインが紹介されていたのですが「複数のモデルに跨がった巨大なフォームには散々泣かされましたが、ActivePresenter を使えば楽になれそうな気がします。使ってみます。」で終わっていたのでrails-tokyoのIRCで後日談を聞いてみました。そしたら「今ガンガン使ってて結構幸せです」とのことですので私も使ってみようと思います。使う場面としてはアクション一つでモデル複数を扱うような場合、ですね。

http://d.hatena.ne.jp/ursm/20081006/1223309255

複数の ActiveRecord オブジェクトをまとめて扱う

一つのアクションで複数のモデルオブジェクトを操作するのは意外に厄介なものです。データの受け渡しは fields_for で何とかなるとしても、関連の組み立てやエラー処理などやっているとすぐにコードがとっちらかってしまいます。

ActivePresenter プラグインを使うと、複数のモデルオブジェクトを束ねて一つのオブジェクトのように操作することができます。

IRCログ

14:52 (ysakaki) こんにちは!
14:56 (littlestarling) ちわっす
14:56 (ysakaki) ActivePresenterって使っている方います?
14:59 (ysakaki) 開発状況ってどうなんでしょうね。開発継続してるのかしら
15:01 (littlestarling) http://github.com/giraffesoft/active_presenter/network
15:01 (littlestarling) 一応進んでるようにも見えますね
15:02 (ysakaki) おお格好いい!こんな画面があったとは
15:03 (ysakaki) http://github.com/ursm/active_presenter/network/members
15:03 (ysakaki) ursmさんて開発メンバー?
15:04 (ursm) いえ、forkしてるだけですよ
15:05 (ysakaki) あら
15:06 (ursm) ここ最近動きはないですね < ActivePresenter
15:06 (ursm) validation を使えるよう拡張した fork があったので、私はそれを使っています
15:10 (ysakaki) Validation使える方がもちろんいいですよね
15:10 (ysakaki) というか巨大フォーム&複数モデルの面倒なとこはそこにあるような
15:14 (ysakaki) >ursmさん:お薦め度はどれくらいですか?<ActivePresenter
15:15 (ursm) 難しいですね
15:15 (ysakaki) 「複数のモデルに跨がった巨大なフォームには散々泣かされましたが・・・」の後日談が知りたかったんですが
15:15 (ysakaki) ActivePresenterを使ったら幸せになれました!みたいな
15:16 (ursm) ActivePresenter 自体は特に凄いことをしてくれるわけではないんですが、モデルに寄せきれないアプリケーションロジックを吸収する層を設けることはとても良い方向性だと思います
15:16 (ursm) 今ガンガン使ってて結構幸せです
15:17 (ursm) 最近だと CSV インポート機能なんかを Presenter で実装してますね
15:17 (ysakaki) おおー。
15:18 (ysakaki) 難しいとはどの辺りでしょう?
15:19 (ursm) お薦め度って一概には言えなくて難しいなー、と
15:20 (ysakaki) なるほど。
15:20 (ursm) モデルだけで無理なく完結するのなら必要ないんでしょうねえ
15:22 (ysakaki) 確かに。

今日の吹いた:ソニーのアフィリエイトプログラム「BLOGENT」終了

ちょっVAIO Pのアフェリエイトでもやるかと思って申し込んだ俺涙目(w
何か中の人とのやりとりが大企業的だったと思ったらこういう内部事情だったのね。

http://www.blogent.jp/info20090126.html

アフィリエイトプログラム“BLOGENT(ブロジェント)”サービス終了のお知らせ

平素よりアフィリエイトプログラム“BLOGENT(ブロジェント)”をご利用いただきまして、誠にありがとうございます。


2008年4月9日より運営をしてまいりました“BLONGET(ブロジェント)”について、誠に勝手ではございますが、2009年3月16日(火)正午をもちましてサービスを終了させていただくことになりました。


“BLOGENT” は、個人ブログユーザー様を中心にアフィリエイト活動の楽しさを提供し、参加ECサイト様の販売促進活動を支援するサービスとしてスタートいたしましたが、会員数が当初目標から大きく下回り、サービス内容改善や事業の将来性について見直しを進めてきました。
また同時に当社を取り巻く経営環境の悪化も顕在化し、事業継続は難しいとの判断にいたりました。