0

投稿ごとに多くの場所を作成するネストされたフォームがあります。各場所は、複数の投稿で使用することもできます。

たとえば、投稿 1 には Location1、Location2、および Location3 が含まれる場合があります。

AND Post 2 には Location1、Location4、および Location5 が含まれる場合があります

これらの場所を、追加されたのと同じ順序で投稿内に並べたいと思います。これを行う最も簡単な方法は、結合テーブル (Posts_Locations) に「注文」列を追加することだと思います:order_byが、コントローラーでこれを設定または定義する方法がわかりません。SQLで直接これを行う必要がありますか?

助言がありますか?これはこれを行うための最良の方法ですか?

4

1 に答える 1

1

Post と Location の両方に単純な結合テーブルと を使用している場合はhas_and_belongs_to_many、 posts_locations テーブルを独自のモデルにして、 を使用して 2 つを結合することができますhas_many :through。これについては、こちらの Rails ガイド で詳しく説明しています。

おまけのヒント: 新しい列を追加するときは、モデルを変更して、テーブル名を PostLocation のような特異なものに結合しますpost_locations。また、このフィールドには "order" という単語を使用しないでください。これは、Rails と SQL の両方のキーワードであるためです。多分それを「display_order」と呼んでいますか?

次に、PostLocation モデルでスコープを作成するか、適切な順序を定義するデフォルト スコープを作成することもできます。scope :sorted, order("display_order DESC")

私が尋ねるかもしれないもう 1 つの質問: 投稿の順序がどちらの場所にリンクされているか、またはその逆であるというのは本当ですか?

于 2012-11-29T17:40:43.030 に答える