2016-04-08 14 views
1

Kullanıcı rolleri için projem için önceki bir rol çözümüyle basit bir boole yöntemi ile Tek Tablo Kalıtım çözümüne geçtim. Ben Devise'yi kullanıyorum. STI projemde işe yarayacak gibi görünüyor, ancak bunu görüşlerime göre nasıl çalıştırabileceğimi merak ediyorum.Ruby on Rails - Kullanıcı rolleri STI sorgusuyla

Örneğin, eğer current_user.teacher ise < derdiydim? %> .... <% end%> ve bu, farklı kullanıcılar ve benzeri şeyler saklamak için çalıştı. Şimdi kullanıcı tablomda STI'yı desteklemek için bir "type" sütunu var ve yukarıdakilerin bununla nasıl uygulanacağını merak ediyorum (o da öğretmen)?

Teacher.rb

class Teacher < User 

end 

index.html.erb

<% if current_user.teacher? %> 
     <%= link_to "Create Homework Assignment", new_homework_path, class: "btn-custom" %> 
     <a class="btn-custom" href= "/homeworks/homework_completed" role="button"><i class="fa fa-sm fa-check green-tick"></i>Completed Homework Table</a> 
     <% end %> 

teşekkürler. Gerekirse daha fazla bilgi.

<% if current_user.is_a? Teacher %> 

Alternatif aynı DSL sizin için denetimi yapar sizin User sınıfa bir teacher? yöntemi ekleyip tutabilir:

cevap

2

Sen kullanıcı bir bir Öğretmen örneği olup olmadığını sormak gerekir

def teacher? 
    is_a? Teacher 
end 
+0

Awesome thanks! :) Doğru olarak işaretleyecektir. – Co2

+0

Sadece sormak için (tüm bu filtreleri düzeltmek zorunda kalmamayı tercih ediyorum) "öğretmen" ne olurdu? yöntem benziyor? Şu anda öğretmenim mi var? \t öğretmen end – Co2

+0

Bu harika. Çok teşekkür ederim! – Co2