我一般都是RoR和Ruby的新手,所以如果我对语法的理解不太好,请原谅我。我正在利用CanCan授权某些能力,显然,我想限制用户只查看他/她自己的时间表。
在我的日程表模型中,我有
belongs_to:camp
我认为我可以利用以下内容(假设id是用户的属性)
can :read, Schedule, current_user.user_id => user.id
如果改变了什么,我也会使用Devise。
感谢。
答案 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