0
我有兩種模型Trip和Day,它們具有一對多的關係。目前我不想讓Day成爲嵌入式文檔。使用mongoMapper在rails 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
我希望能夠創建一個看起來像這樣的路線:
/trips/:trip_id/days/:index_of_day
凡:index_of_day
將被用來尋找n天的行程@trip.days[:index_of_day]
,所以一個人可以輕鬆地瀏覽第一天,第二天等旅行。
目前我route.rb文件看起來像這樣:
resources :trips do
resources :days
end
產生的缺省路由/trips/:trip_id/days/:day_id
。
中途的一個解決方案,我已經是擺在我的route.rb文件
match 'trips/:trip_id/day/:id' => 'days#show'
然後在我的日子控制器
def show
@day = Trip.find(params[:trip_id]).days(params[:id].to_i)
...
end
這種除了都喜歡trip_day_path
自動傭工的工作使用day id重定向,而不是日期索引。
謝謝。我被警告不要修改to_param,但我認爲它可能比我目前所做的更清晰。如果我沒有使用:我怎麼知道包括哪些日子? – lashleigh
如果使用許多的w/o:在,那麼這將是一個標準的多對許多: '類日 包括MongoMapper ::文件 鍵:trip_id,OBJECTID belongs_to的:行程 結束 類旅行 包括MongoMapper ::文檔 許多:天 結束# 這將工作。不幸的是,您不能保證所有的日子都會按順序恢復。您可能需要添加另一個密鑰以確保或者聲明您的關聯是這樣的: 'many:days,:order =>:date.asc' –
有趣的是,我沒有意識到它會在沒有創建我自己的day_ids數組,謝謝。 – lashleigh