我有一个页面显示另一个用户发布的帖子,并且我能够做到这一点,因此如果您转到索引,它只会显示 user_id 为当前用户 user_id 的帖子。但是,如果我转到 url 并更改帖子编号,我可以看到其他用户的帖子,甚至可以编辑它们。我尝试更改控制器显示@time_sheets = TimeSheet.where(:user_id => current_user.id)find(params[:id])
并尝试<% if @time_sheet.user_id == @currentuser.id %>
在视图中使用,但似乎都不起作用。我究竟做错了什么?
user2360274
问问题
67 次
2 回答
2
如果用户尝试访问其他用户的页面,您可以使用 before_filter 并将用户重定向到带有错误消息的主页。
before_filter :validate_user
def validate_user
timesheet_user_id = Timesheet.find(params[:id]).user_id
redirect_to :root, :alert => "Unauthorized" unless timesheet_user_id == current_user.id
end
您可以在此处阅读有关过滤器的更多信息
于 2013-06-14T15:11:18.453 回答
-2
在控制器中,您应该具有:
@time_sheet = TimeSheet.where(user_id: current_user.id).find(params[:id])
或者,如果您有关联用户 has_many 时间表:
@time_sheet = current_user.time_sheets.find(params[:id])
它应该工作。
顺便说一句,您当然应该在调用这段代码之前检查是否有人登录。
于 2013-06-14T15:01:10.637 回答