刘华佼的全栈学习记录

如何优化controller里的重复代码

| Comments

目标:

优化controller里的重复代码

步骤一:

edit、update、destroy 这三个 action 都有一样的代码。可以把它包装起来。

在app/controllers/xxxs_controller.rb的private 里,增加函数定义:

 def find_xxx_and_check_permission
    @xxx = Xxx.find(params[:id])

    if current_user != @xxx.user
      redirect_to root_path, alert: "You have no permission."
    end
  end

步骤二:

把edit、update、destroy 这三个 action 那段重复代码删掉。

步骤三:

在edit、update、destroy 这三个 action删除代码的地方,增加:
find_xxx_and_check_permission

步骤四:

find\_xxx\_and\_check\_permission是在三个action的最前面执行的,所以可以放到before_action里,在controller最上方增加一句:
before_action :find_xxx_and_check_permission, only: [:edit, :update, :destroy]

Comments

comments powered by Disqus