我的代码库包含prepend_before_action:authenticate_api_user等回调函数!before_action:authenticate_api_v1_user!这两者有什么区别?
Sra*_*van 16
一般before_action运行before every action到method和
prepend_before_action它做了什么.它只是在索引零处添加您的定义.
这是一个很好的用例来证明:
class ConfuseUsersController < ApplicationController
prepend_before_action :find_user, only: [:update]
prepend_before_action :new_user, only: [:create]
before_action :save_and_render
def update
end
def create
end
private
def find_user
@user = User.find(params[:id])
end
def new_user
@user = User.new
end
def save_and_render
persited = @user.persited?
@user.assign_attributes(user_params)
if @user.save
redirect users_path(@user)
else
render (persited ? :edit : :new)
end
end
end
Run Code Online (Sandbox Code Playgroud)
before_action :save_and_render这使得save_and_render在每个动作之前被调用.prepend_before_action :find_user, only: [:update]这可以find_user预先知道函数save_and_render让我们再看一个例子:
我们有一个ApplicationController地方,
class ApplicationController < ActionController::Base
before_action :one
before_action :three
end
Run Code Online (Sandbox Code Playgroud)
现在,在任何控制器,如果我们要执行的例如任何其他方法two之前,three你可以使用 prepend_before_action像
prepend_before_action :three, :two
class AdminsController < ApplicationController
prepend_before_action :three, :two
end
Run Code Online (Sandbox Code Playgroud)
现在,在three执行之前two将获得execute,然后three为此特定的meethod.
| 归档时间: |
|
| 查看次数: |
3718 次 |
| 最近记录: |