2011-01-28 5 views
0

私は2つのモデルを用意していますが、この例ではEntryとCommentsという名前が付けられていますが、これはEntry has_many :commentsとComment belongs_to Entryに関連付けられています。新しいコメントが作成されたら、私は明らかに外部キーのエントリのIDを提供する必要があります。今、私はクエリ文字列を使用しています。それはこのように動作します。ユーザーが表示して入力し、リンクをクリックして新しいコメントを作成すると(リンクはb/new?a_id = 1のように見えます)、次にビルドメソッドを使用して新しいレコードを作成します。これを行うには、レール3のクエリ文字列を使用するよりも良い方法はありますか?

私はそれがうまくいくと思うリソースをネストすれば知っていますが、それをやりたくない理由があります。つまり、コメントの下にリソースをネストして、多くのレベルは深い。

私は初めにエントリーショーページに新しいコメントのフォームがありましたが、いくつかのカスタム検証を行い、エラーメッセージなどを渡すことに問題がありました(つまり、サブミットする前に単語を数える必要がありました)。

どのような考えですか?私は、クエリ文字列を使用することに反対していない、ちょうど良い方法があるかどうかわからない。

答えて

0

ネストされたリソースの問題は正直に分かりません。あなたの選択肢がPOST /entries/123/commentsまたはPOST /comments?entry_id=123であるように、あなたのケースでエントリを識別しなければならないでしょう。個人的に私は前者を好む。

+0

私はちょうど1レベル以上の深みを巣に入れたくありません。後で、エントリ/ 123/comments/2/votes/23 /などのようなものが必要になります(これは単なる例で、私のアプリケーションはエントリやコメントについてではなく、おそらく最良の例ではありません)。コメントは関連付ける必要がありますが、ユーザーエクスペリエンスに関してはエントリから分離する必要があります)。だから私はそれが働くことを知っていますが、私は本当にコメント/ 2/vote/23を後で扱い、あまり深く巣を入れない方が好きです。 – Slick23

+0

Hmmm。たぶん '浅い=>本当の'は行く方法ですか? – Slick23

+0

これは、このケースであなたに役立つことはありません(エントリに添付されたコメントの作成)。それは、あなたがエントリーを特定する必要なく、 '/ comments/123'でコメントを表示することを可能にします。 – noodl

関連する問題