【发布时间】:2013-07-04 06:40:49
【问题描述】:
我正在使用 Devise 注册帐户和登录/注销。我要添加的下一个功能是仅显示为给定用户输入的数据。例如,如果我创建一个新的“东西”(在我的例子中是一个客户端,位于 /clients/new),我只希望创建该东西的人能够查看它。现在,如果我登录并创建一个新客户端,然后注销并以其他用户身份重新登录,我可以看到我以其他用户身份创建的客户端。这应该受到限制,以便作者是唯一可以读取、更新和销毁自己的客户端的人。
我已经在 CanCan 上看过 Ryan Bate 的 screencast 3 遍了,但似乎只是针对不同的角色进行设置,而不是根据作者来限制内容。
CanCan 如何解决这个问题?
我当前的ability.rb 里面除了一个空的initialize(user) 方法之外什么都没有。
我在那个方法里面试过这个:
can :update, Client do |client|
client.try(:user) == user
end
与
<% if can? :update, @client %> ... <% end %>
围绕在索引视图中显示客户端的循环,但无济于事。
【问题讨论】:
-
我想你想引用 current_user 那里
标签: ruby-on-rails ruby-on-rails-3 devise cancan