うわっ この人も見ているわwww
という訳で、諸橋氏さんからも、レス頂いてますな。
「ネストしたリソースの扱いの話とか」。
う〜ん。
貴重なご意見ありがとうございます。
勉強になります。
が...う〜ん...
という。あと読み返して思ったんですが、ネストしたリソースの扱いについての議論に対して、そのリソースはネストしていない、という主張が来てるのか。それはすれ違うなー、と思いました。
う〜ん、ネストはしていると思っていますよ。
でも、「ネストする」と「内包する」って、意味が違うんですか?
いまのRailsのセオリーは、『ユーザにとって価値がある単位のエンティティの集まり』をリソースとして扱って、それをCRUDすることで大抵のことができるから、そうしようね、というものになってると思います。コントローラレイヤはCRUDを担うシンプルなものにしていこう、というのが(たぶん)基本的な方向性になっています。
ああ、そうなんですね。
う〜ん、だとすると、CRUDじゃないリクエスト、例えば検索とかは、どうするんだろうという疑問がまあいいや;-p
でid:lov2muchさんが作ってるアプリでのCommentがアグリゲータに完全に内包され、それ自体がリソースにならなというならそうなんでしょうが*1、とりあえずあの場ではCommentそれ自体もリソースとして扱おうとしていた、という前提は押さえていただかないと話が発散するか、と。あくまで、ネストしたリソースをどう扱うか、という話です。
いえ。
僕が作っているモノの場合でも、CommentはCommentで独立していますよ。
それと同時に、Postの一部である、あるいは他のモデルの一部である状態っていうか。
独立して扱うと同時に、何かの一部としても扱える状態って云うのは、在り得ませんか?
っていうか、それが「ネストしている状態」ではないんですか?
うーん、よく訓練されたRails 2.x厨としては「アクション名に動詞が含まれるのってダサくないですか?」なわけです。リソースのURIに対して様々なHTTPメソッドでアクセスしてリソースをCRUDするというのが、RailsがRESTから拝借してきたパターンなわけで。ということでmap.resoucesを使いましょう。
はい。
map.resourcesでやりますよ。
っていうか、う〜ん、なんていうのか、なぁ...
ここがたぶんもっとも意見が異なるところですが、
多分そうですね;-p
PostはCommentをあくまで集約するものであって内包するものじゃないと思いますよ。むしろ、PostsControllerでやりたい!!というモチベーションからPostの一部だとおっしゃってるように感じます。それはレールから降りる兆候かもしれないのでご注意。
いえいえ。
僕は、コントローラがどうかなんて、どうでもよかったりなんかします。
僕が、一番疑問に思っているのは、
class Post < ActiveRecord::Base has_many :comments end class Comment < ActiveRecord::Base belongs_to :post end
な状態で、
>> Comment.create
だと、commentsテーブルのpost_idカラムはnilですよね?
でも、
>> Post.find(1).comments.create
だと、post_idカラムに、勝手に1が入る訳じゃないですか。
内包しているものとして扱うからこそ、の、has_manyじゃないのかな、と。
でも、Commentを主体にして見れば、親がどうだかは別段関係ない訳で。
見方が変われば、見え方が変わるのは、当たり前で。
っていうか、オレはナニが云いたいんだwww
そうそう。
関連付けした子リソースを、親の一部として扱うのは、rails的ではないのか? というのが、疑問なんですね。
「何の為の親子構造?」とか、「何の為に勝手に親のid振ってくれてるの?」とか、そういう感じですかね。
う〜ん、っていうか、オイラの考え方、なるべく物事を単純に解りやすく捉えて利用しよう、っというのは、あまり、rails的ではないのかもなー。