加入CanCan

时间:2013-11-18 18:18:13

标签: ruby-on-rails ruby

我一般都是RoR和Ruby的新手,所以如果我对语法的理解不太好,请原谅我。我正在利用CanCan授权某些能力,显然,我想限制用户只查看他/她自己的时间表。

在我的日程表模型中,我有

belongs_to:camp

我认为我可以利用以下内容(假设id是用户的属性)

can :read, Schedule, current_user.user_id => user.id

如果改变了什么,我也会使用Devise。

感谢。

3 个答案:

答案 0 :(得分:0)

你走在正确的轨道上...在你的控制器中,你authorize! :read, @schedule(或使用load_and_authorize_resource代表整个控制器,然后在ability.rb,你想要的做类似的事情:

can :read, Schedule do |schedule|
  user.id == schedule.user_id
end

答案 1 :(得分:0)

可以接受的"hash of conditions"是指可用于过滤相关类记录的条件。在这种情况下,您需要指定与Schedule类相关的条件。例如,如果user_id是Schedule的属性,那么该能力应该是

can :read, Schedule :user_id => user.id

(CanCan会将当前用户作为名为user的本地变量传递给你)

答案 2 :(得分:0)

试试这个:

可以:读取,安排,:user_id => user.id