我有兩個類:的Rails 3 HAS_ONE路由
class User < ActiveRecord::Base
:has_one :foo
end
class Foo < ActiveRecord::Base
:belongs_to :user
end
foo的是可選的。
我創建了以下路由:
resources :users do
resources :foo
end
導致以下路線:
GET /users/:user_id/foo(.:format) {:controller=>"foos", :action=>"index"}
user_foos POST /users/:user_id/foo(.:format) {:controller=>"foos", :action=>"create"}
new_user_foo GET /users/:user_id/foo/new(.:format) {:controller=>"foos", :action=>"new"}
GET /users/:user_id/foo/:id(.:format) {:controller=>"foos", :action=>"show"}
PUT /users/:user_id/foo/:id(.:format) {:controller=>"foos", :action=>"update"}
user_foo DELETE /users/:user_id/foo/:id(.:format) {:controller=>"foos", :action=>"destroy"}
edit_user_foo GET /users/:user_id/foo/:id/edit(.:format) {:controller=>"foos", :action=>"edit"}
問題:
- 好像索引和顯示的動作是多餘的。如果其中一個被刪除?如果是這樣,哪一個?
- Show操作中的id參數看起來沒有必要,因爲user_id是foos表中的外鍵,每個用戶只有一個foo。我錯了嗎?
- 如果沒有foo,我希望能有一種優雅的方式來路由到New動作。一種選擇是測試@ user.foo.nil?在FooController的顯示或索引操作中,然後重定向到新操作。有沒有更好的辦法?
謝謝你的時間。
不能相信我錯過了。 – craig 2010-08-03 12:51:03
感謝您的信息 – 2013-10-09 12:27:24