Hatena::Grouprubyist

うんたらかんたらRuby RSSフィード

2009-07-21Pragmatic Patterns of Ruby on Rails - Ruby Kaigi2009

Pragmatic Patterns of Ruby on Rails - Ruby Kaigi2009

| Pragmatic Patterns of Ruby on Rails - Ruby Kaigi2009 - うんたらかんたらRuby を含むブックマーク はてなブックマーク - Pragmatic Patterns of Ruby on Rails - Ruby Kaigi2009 - うんたらかんたらRuby

ぷっちん日記(2009-07-17)


ActiveRecordに絞った実装パターンのお話。

こんなのが知りたかった。

さすがrailsでガンガンお仕事されてる方だけあって

とてもためになります。

rubykaigi行きたかったなぁ。


メモ

オブジェクト起点で検索

関連を使う

Filterを使う(コントローラ名とFilterで概要が分かる!)

ビジネスロジッックをモデルに移行するために

制御条件をモデルの属性にする


あとで考える

「複数リソースのCRUDはまずい」

これがピンとこなかった。どうまずい?

class BlogsController < ApplicationController
  def create_comment
  end
  
  def comments
  end
  
  def destroy_comment
  ....

nay3nay32009/07/22 12:10こんにちは、大場です。その複数リソースのCRUDの話は、BlogCommentsControllerという別のコントローラを作り、それの標準的なCRUD(例えば上記3つのアクションに対応するのは create, index, destroy)として実装するとRailsのRESTfulにきれいにはまる、ということです。これで答えになりますか?

koichirookoichiroo2009/07/22 12:34大場(だんな)です。補足すると、BlogControllerはブログのエントリというリソースに関してのCRUDを制御するはずなのでBlogController#create,index,destroyが当然あるわけです。
同じBlogControllerに対して、加えてコメントというリソースのCRUDも操作させようとすると、スライドで例示したようなアクションを追加せざるをえず、結果的にひとつのコントローラでふたつのリソースを操作することになります。
その弊害としてはURLがシンプルなRESTから外れる(rootsでresourcesが使えない)。フィルターするアクションを意識して選ばないといけなくなるなどコードが複雑になる要因となります。

rochefortrochefort2009/07/23 02:55id:nay3さん、id:koichirooさん
おお、親切なコメントありがとうございます。
だんなさんの補足もあってよく理解できました。

多レベル/STI/route.rbの整理 らへんの話も興味あるので、(勝手ですが今後も)期待しています。

トラックバック - http://rubyist.g.hatena.ne.jp/rochefort/20090721