Aşağıdaki örnek:
devise_for :users, :path => 'accounts'
resources :users do
resources :orders
end
Yukarıdaki kimlik doğrulama yolu olduğu anlamına gelir "/accounts/sign_in"
, "/accounts_sign_up"
vb. Bazıları, devise_for :users
'un aslında haritasının UsersController
ve modeline ait olmadığını kabul etmenin önemli olduğunu bilmeyebilir. Onun bir kaynak yolu bile değil, pek çok göründüğü gibi görünüyor. Hangi aşağıdaki gibi davranın edemez yüzden: Yani şu yapabileceğini söyleyerek
# Session routes for Authenticatable (default)
new_user_session GET /users/sign_in {:controller=>"devise/sessions", :action=>"new"}
user_session POST /users/sign_in {:controller=>"devise/sessions", :action=>"create"}
destroy_user_session GET /users/sign_out {:controller=>"devise/sessions", :action=>"destroy"}
# Password routes for Recoverable, if User model has :recoverable configured
new_user_password GET /users/password/new(.:format) {:controller=>"devise/passwords", :action=>"new"}
edit_user_password GET /users/password/edit(.:format) {:controller=>"devise/passwords", :action=>"edit"}
user_password PUT /users/password(.:format) {:controller=>"devise/passwords", :action=>"update"}
POST /users/password(.:format) {:controller=>"devise/passwords", :action=>"create"}
# Confirmation routes for Confirmable, if User model has :confirmable configured
new_user_confirmation GET /users/confirmation/new(.:format) {:controller=>"devise/confirmations", :action=>"new"}
user_confirmation GET /users/confirmation(.:format) {:controller=>"devise/confirmations", :action=>"show"}
POST /users/confirmation(.:format) {:controller=>"devise/confirmations", :action=>"create"}
ama bazı çatışmaları olurdu:
devise_for :users do
resources: somereosouce
end
Tüm devise_for
yapar aşağıdaki yolları haritasına olduğunu : İç içe kaynaklara
devise_for :users
resource :users do
resource :foo_object
end
biraz, aşağıdaki gibi bir şey varsa:
class Users < ActiveRecord::Base
has_many :foo_object
end
class FooObject < ActiveRecord::Base
belongs_to :users
end
Sonra iç içe kaynak
resource :users do
resource :foo_object
end
Umarım bu şeyleri temizler olurdu. Ayrıca okumak için
Nested Resource with Devise - Rails3
'devise_for' sorusunu açıklığa kavuşturmak isteyebilirsiniz. En iyi açıklama okudum! – HM1
Q # 2 için, kaynağı yerleştirmek için ne yapmam gerektiğini biliyorum ... Sanırım soru daha fazla gerekli mi yoksa bu durum için ilgili modellerin kaynağını yerleştirmek zorunda mıyım? Çünkü bu durumda, “current_user” 'ı kontrol cihazında kullanabilir ve ': foo_object' modelini oluşturabilir/güncelleyebilirim. Bunu böyle yapmanın sonuçları olup olmadığını merak ediyorum. – HM1
@ HM1 tam olarak gerekli değil, ancak mantığınızı tanımlamak istiyorsanız uygulamanız o zaman evet. Kaynaklarınızı gruplandırmanın daha temiz bir yolu. Ancak sizin durumunuzda, bir 'kullanıcının' foo_object' ile ilişkili olduğunu biliyorsunuzdur. Böylece, bir 'kullanıcıya' bir eylem gerçekleştirdiğinizde, aynı zamanda bir foo_object eylemi de gerçekleştireceksiniz. Dolayısıyla, URL'niz potansiyel olarak bu gibi bir şey gibi görünecektir '/ users/3/foo_object/4' İç içe geçmiş rotaların olmasının gerekli olmasının bir diğer sebebi de Rails'teki önemli ilkelerden biri olan RESTful olmasıdır. – David