我有两个类:的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