5
Bence bir insan sınıfına

Kırık Raylar Rotalar Tek Masa devralma uyguladıktan sonra

class Person < ActiveRecord::Base 

end 


class Teacher < Person 

end 

class Student < Person 

end 

class Outsider < Person 

end 

için tek tablo devralma uygulamış Ve oluşturmak kişi formunda seçilen hususlar uyarınca Öğretmen, Öğrenci veya Kişi oluşturarak iş gibi görünüyor

.select ve type özelliği eklenir. |

Ancak, yolları

<% = link_to 'Edit', edit_person_path (@deal)%> kırık gibi görünüyor <% = link_to 'Back', persons_path%>

Person_path yerine teacher_path, student_path ve outsider_path işaret ediyor gibi görünüyor.

Rotalarda hangi değişikliklerin yapılması gerekiyor?

cevap

2

ilk

resources :persons 
resources :teachers 
resources :students 
resources :outsiders 

rotaları

örn de REST verir

routes.rb sonra
rails generate controller Persons 
rails generate controller Teachers 
rails generate controller Students 
rails generate controller Outsiders 

(raylar 3) ... senin modelleri için denetleyicileri oluşturmak

persons GET /persons(.:format) {:action=>"index", :controller=>"persons"} 
new_person GET /person/new(.:format) {:action=>"new", :controller=>"persons"} 
edit_person GET /persons/:id/edit(.:format) {:action=>"edit", :controller=>"persons"} 
person GET /persons/:id(.:format) {:action=>"show", :controller=>"persons"} 
persons POST /spersons(.:format) {:action=>"create", :controller=>"persons"}  
person PUT /persons/:id(.:format) {:action=>"update", :controller=>"persons"}  
person DELETE /persons/:id(.:format) {:action=>"destroy", :controller=>"persons"} 

öğretmen, öğrenci ve yabancı

onay tırmık yolları veya tırmık yolları için aynı | grep teacher

+2

i böylece DİNLENME , routes.rb maçında 'öğretmen /' => "kişiler # endeksi" add kaybedecek her biri – Arc

+0

için farklı denetleyicileri istemiyorum: Öğretmenler maçın 'öğretmen /: => gibidir: id (.: format) '=> "kişiler # show",: as =>: hocalar ve benzeri ... – codevoice

+1

bu çalışır, ama KURU değil - tüm kontrolör kodunu tekrarlamanız, ve her alt sınıf – Tilo

1

Deneyimlerimden, tüm STI modelleri için tek bir kontrolör kullanmak daha iyidir. Denetleyicilerinizi DRY koruyorsanız, her alt sınıf için benzersiz bir denetleyici mantığına sahip olmanız gerekmemelidir. Bütün bunları modellerde saklayın.

people_path 
new_person 
edit_person 
person 
etc... 

Sonra bu modelleri yönetmek için aynı kontrolör/görünümleri kullanabilirsiniz: gibi

resources :people 

Ad verdiğiniz yolları olacaktır. Daha sonra yeni Kişi STI modelleri eklemeye karar verirseniz, kodunuzda önemli güncellemeler yapmanız gerekmeyecektir.

+2

için görünüm kodu üzerinde ve daha fazlası Bu işe yaramaz gibi görünüyor. <% = Link_to 'Edit' için, edit_person_path (@deal)%> edit_teacher_path (@user) 'u bulmaya çalışır ve – Arc

+0

'un şu anda bununla başedememesi başarısız olur. Alt modellerimi, görünümlerde önemli ölçüde farklı şekilde ele almak istiyorum. ve denetleyicide ya da görüşte bir dizi koşullu mantığa sahip olmamayı tercih ederler .. düşünceler? –

İlgili konular