当用户登录时,他有能力查看他正在参加的活动。 用户控制器中的操作如下
class UsersController < ApplicationController
before_filter :authenticate_user!
def events
@title = "Events"
@event = User.find(params[:id])
@events = @event.event_presence.paginate(page: params[:page])
render 'show_events'
end
end
然而,用户(2)只需更改http地址即可查看用户(3)的事件: / users / 2 / events to users / 3 / events
所以我的问题是,如何确保用户(2)只能看到用户(2)而不是用户(3)的事件。
由于
答案 0 :(得分:1)
过滤event方法中的current_user.id而不是params [:id]
@event = User.find(current_user.id)
然而,更好的方法是拥有一条不包含id
的特殊路线get 'events' => 'users#events', as: :users_events
并像这样使用
= link_to 'Events', users_events_path
答案 1 :(得分:0)
Cancan是一个宝石,可以帮助您定义用户可以做什么和不可以做什么。
https://github.com/ryanb/cancan
它适用于设计,所以不要担心实施。
您也可以尝试角色:
https://github.com/the-teacher/the_role
就个人而言,我认为其文档更好。