在我的项目控制器中,我有以下操作。如您所见,在呈现“show”视图时调用了“check_if_owner_or_member”,它检查用户是否是项目成员或管理员。如果不是这种情况,用户会收到一条错误消息并被重定向到根目录。
在尝试该操作时,如果用户是管理员,它会起作用,但如果用户是成员,则不会。所以,'if !is_owner || 显然有问题 !is_member',因为如果我只尝试使用 'if !is_member',它就可以工作。
我究竟做错了什么?
before_filter :check_if_owner_or_member, :only => [:show]
def is_owner
Project.where("id = ? AND user_id = ?", params[:id], current_user.id).count > 0
end
def is_member
ProjectsUser.where("project_id = ? AND user_id = ?", params[:id], current_user.id).count > 0
end
def check_if_owner_or_member
if !is_owner || !is_member
redirect_to root_path
flash[:error] = "You don't have permission to the project!"
end
end