【发布时间】:2023-08-05 21:21:01
【问题描述】:
在我的能力.rb 我有
user ||= User.new
if user.has_role? :admin
can :manage, :all
elsif user.has_role? :collaborator
can :manage, Task, :user_id => user.id
else
can :read, Task, :user_id => user.id
end
问题是,在 TasksController 中,当我写这个时:
def index
@taks = Task.all.order('created_at DESC')
end
当以协作者身份登录时,它不会过滤任务列表:
任务负载 (1.4ms) SELECT "tasks".* FROM "tasks" ORDER BY created_at DESC
但是,当我写这个时:
def index
Task.all.order('created_at DESC')
end
当以协作者身份登录时,它会过滤:
任务负载 (0.9ms) SELECT "tasks".* FROM "tasks" WHERE "tasks"."user_id" = 2
但不订购清单!我不明白为什么它的行为不同,如何在不在控制器中添加额外逻辑的情况下进行过滤和排序?
我正在使用 rails''4.1.4'、'devise''3.3.0'、'cancan''1.6.10'。
【问题讨论】:
标签: ruby-on-rails-4 devise cancan