可以使用角色模型限制

时间:2013-12-02 09:10:04

标签: ruby-on-rails ruby-on-rails-4 cancan

我正在尝试实现用户只能看到HIS应用程序,而不是包含所有用户的所有应用程序的“应用程序索引”。

我的标题:

 <%= link_to "My Application ", current_user.application %>

我的能力:

 if user.has_role? :speaker
  can :read, Application do |application| # heres the problem
    application.try(:user) == user
  end
  can :create, Application
  can :update, Application do |application|
    application.try(:user) == user
  end
end

目前,用户可以访问“应用程序/索引”页面。但限制应该只允许他访问:

http://localhost:3000/applications/8 # 8 being his application

我缺少什么?

1 个答案:

答案 0 :(得分:1)

可能不是最干净的方式,但这有效:

index行动中:

if current_user.has_role? :admin
  @applications = Application.all
else
  @applications = current_user.application
end
index.html.erb

中的

<% if current_user.has_role? :admin %>
  <%= render @applications %>
<% else %>
  <% @applications.title %> etc..
<% end %>

注意current_user.application是因为user模型has_one :application