铁轨许可

时间:2014-09-25 13:18:18

标签: ruby-on-rails ruby-on-rails-4 permissions

我有一个工作页面,用户可以创建新的工作编辑和销毁他们的工作,我想让用户只编辑或销毁他们的帖子只有连接否则他们将返回到工作展示页面为此我有这个代码在我的工作控制器

def require_login
  @job = current_user.jobs.find_by_slug(params[:id])
  redirect_to job_path if @job.nil?
end

  before_action :login_required
  def login_required
    redirect_to new_user_session_path unless user_signed_in?
  end
  before_action :login_required, :require_login, only: [:edit, :update, :destroy]

唯一不起作用的部分是当我没有连接并尝试编辑我的工作时,它会将我重定向到登录表单但登录后会将我重定向到主页而不是编辑页面

1 个答案:

答案 0 :(得分:-1)

首先,您粘贴的代码块看起来很奇怪,原因有三:

  1. 缩进错误
  2. 你有before_action :login_required两次,而且它们不一样
  3. 从方法名称来看,它不清楚你想要什么
  4. 根据您所写的内容,您希望用户仅在他们登录时编辑或销毁作业 - 否则您希望将他们发送到作业索引页面。如果那是对的,控制器中的代码应该类似

    class JobsController < ApplicationController
      before_filter :require_login, :only => [:edit, :update, :destroy]
    
      def edit
        # your code here
      end
    
      def update
        # your code here
      end
    
      def destroy
        # your code here
      end
    
    private
      def require_login
        redirect_to job_path unless user_signed_in?
      end
    end