Ruby on Rails - 具有STI查询的用户角色

时间:2016-04-08 18:07:17

标签: ruby-on-rails devise

对于我的用户角色,我已使用简单的布尔方法从以前的角色解决方案切换到我的项目的单表继承解决方案。我正在使用Devise。 STI似乎在我的项目中有效,但我想知道如何在我的观点中使用它?

例如我曾经说过<%if current_user.teacher? %> ....<%end%>这适用于隐藏来自不同用户的东西等等。现在我在我的用户表中有一个“类型”列来支持STI,我想知道如何用这个来实现它(它也是老师)?

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 %>

感谢。如果需要,请提供更多信息。

1 个答案:

答案 0 :(得分:2)

您需要询问您的用户是否是教师的实例:

<% if current_user.is_a? Teacher %>

或者,您可以向teacher?课程添加User方法,该方法会为您进行检查并保留相同的DSL:

def teacher?
  is_a? Teacher
end