Ho due classi:Rails 3 has_one instradamento
class User < ActiveRecord::Base
:has_one :foo
end
class Foo < ActiveRecord::Base
:belongs_to :user
end
Il Foo è opzionale.
ho creato il seguente percorso:
resources :users do
resources :foo
end
che si traduce nei seguenti percorsi:
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"}
Domande:
- Sembra che l'indice e la Mostra azioni sono ridondanti. Dovrebbe essere rimosso uno di questi? Se sì, quale?
- Il parametro: id nell'azione Mostra non è necessario, poiché user_id è una chiave esterna nella tabella foos e vi è un solo foo per utente. Mi sbaglio?
- Mi piacerebbe avere un modo aggraziato per indirizzare alla nuova azione se non c'è un foo. Un'opzione potrebbe essere testare @ user.foo.nil? nell'azione Show o Index di FooController, quindi reindirizzare alla nuova azione. C'è un modo migliore?
Grazie per il vostro tempo.
Non riesco a credere che mi sia mancato. – craig
Grazie per le informazioni –