0
1対多の関係を持つ2つのモデルTripとDayがあります。当分の間、私はDayを埋め込み文書にしたくありません。mongoMapperを使用したレール3の配列のインデックスに基づくルーティング
class Day
include MongoMapper::Document
...
key :trip_id, ObjectId
belongs_to :trip
end
class Trip
include MongoMapper::Document
...
key :day_ids, Array
many :days, :in => :day_ids
end
私はこのようにルートを作成できるようにしたいと思います:
:index_of_day
が旅行
@trip.days[:index_of_day]
のn番目の日を見つけるために使用されますので、人は簡単にナビゲートすることができ
/trips/:trip_id/days/:index_of_day
旅行の第1、第2などの日。デフォルトルート/trips/:trip_id/days/:day_id
を生成
resources :trips do
resources :days
end
:
現在、私のroute.rbファイルには、次のようになります。私が持っていた
一つ途中ソリューションは、コントローラ
def show
@day = Trip.find(params[:trip_id]).days(params[:id].to_i)
...
end
自動的trip_day_path
のようなヘルパーのすべてを除いて働いていたこの種の私の日、私のroute.rbファイルに入れて
match 'trips/:trip_id/day/:id' => 'days#show'
そしてでした日のインデックスではなく、日のIDを使用してリダイレクトします。
ありがとうございました。 to_paramの変更を警告しましたが、私が現在行っていることよりもきれいな解決策になると思います。私が使用しなかった場合:どの日が含まれていたかをどのように知ることができますか? – lashleigh
あなたはW/Oの多くを使用する場合:それは、多対多の標準になるだろう、中:trip_id、ObjectIdが belongs_toの:トリップ エンド クラス 'クラスの日 MongoMapper ::ドキュメントキー が含まれます日だけで動作します end' :トリップ はMongoMapper ::ドキュメント 多くが含まれています。残念ながら、あなたのすべての日が順番に戻ってくることは保証されません。 '多く:日、:あなたはそれを確実にするために別のキーを追加したり、このような関連性宣言する必要がある場合があります順序を=>:date.asc' –
興味深い、私はそれだけで作成せずに動作することを認識していませんでしたday_ids私自身の配列、ありがとう。 – lashleigh