'before_action`中的`only:`如何在Rails中工作?

Kar*_*lak 14 ruby-on-rails

在脚手架生成后,我们通常得到一条这样的线:

before_action :set_newsletter_email, only: [:show, :edit, :update, :destroy]
Run Code Online (Sandbox Code Playgroud)

有人能解释一下这个only:符号究竟是如何工作的以及它如何影响安全性?

MrY*_*iji 21

当首先执行方法/块时only,before_action定义一个动作或动作列表的选项.

例如:

# defined actions: [:show, :edit, :update, :destroy]
before_action :set_newsletter_email, only: [:show, :edit]
Run Code Online (Sandbox Code Playgroud)

set_newsletter_email方法将在showeditactions 之前调用.


相反的选项except定义何时不执行方法/块.

# defined actions: [:show, :edit, :update, :destroy]
before_action :set_newsletter_email, except: [:show, :edit]
Run Code Online (Sandbox Code Playgroud)

set_newsletter_email将为所有现有操作EXCEPT show和调用该方法edit.


only/ except只是一种白名单/黑名单.