我正在使用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 %>
围绕在索引视图中显示客户端的循环,但无济于事。
答案 0 :(得分:1)
我认为使用CanCan过滤结果不是最佳解决方案。 如果用户'has_many'客户端,那么在您的控制器方法中只查询用户的客户端:
@clients = current_user.clients
答案 1 :(得分:0)