设计 before_action 解释
Devise before_action explanation
我无法理解安装 Devise 时在控制器中自动生成的这一行:
before_action :set_post, only: [:show, :edit, :update, :destroy]
我尝试阅读文档,但无法理解它的作用。例如,:set_post
符号有什么作用?它是什么的一部分?
任何我可以进一步阅读的解释或资源都将不胜感激。
:set_post - 控制器末尾的方法。
设备与
无关
假设您有这样的控制器:
class PostController < ApplicationController
def index
@posts = Post.all
end
def show
@post = Post.find(params[:id])
end
def edit
@post = Post.find(params[:id])
end
end
你看到在 show
和 edit
动作中有相同的代码,你违反了 DRY 原则,所以为了避免代码重复,你设置了一个动作(方法):
def set_post
@post = Post.find(params[:id])
end
将在需要相同代码的操作之前执行:
before_action :set_post, only: [:show, :edit, :update, :destroy]
最终你会得到这样的控制器:
class PostController < ApplicationController
def index
@posts = Post.all
end
def show
end
def edit
end
private
def set_post
@post = Post.find(params[:id])
end
end
我无法理解安装 Devise 时在控制器中自动生成的这一行:
before_action :set_post, only: [:show, :edit, :update, :destroy]
我尝试阅读文档,但无法理解它的作用。例如,:set_post
符号有什么作用?它是什么的一部分?
任何我可以进一步阅读的解释或资源都将不胜感激。
:set_post - 控制器末尾的方法。
设备与
无关假设您有这样的控制器:
class PostController < ApplicationController
def index
@posts = Post.all
end
def show
@post = Post.find(params[:id])
end
def edit
@post = Post.find(params[:id])
end
end
你看到在 show
和 edit
动作中有相同的代码,你违反了 DRY 原则,所以为了避免代码重复,你设置了一个动作(方法):
def set_post
@post = Post.find(params[:id])
end
将在需要相同代码的操作之前执行:
before_action :set_post, only: [:show, :edit, :update, :destroy]
最终你会得到这样的控制器:
class PostController < ApplicationController
def index
@posts = Post.all
end
def show
end
def edit
end
private
def set_post
@post = Post.find(params[:id])
end
end