2011-07-23 12 views
8

en Rails 2.8 podemos escribir skip_before_filter como estoRails 3 manera de hacer skip_before_filter,: Sólo

skip_before_filter :require_login, :only => [:create,:new,:accept] 

lo que significa, quería aplicar el filtro require_login sólo para estas acciones [:create,:new,:accept], y pasa el filtro para los demás .

Pero parece que de esta manera es deprecated en los rieles 3. Y se agrega el nuevo skip_filter. He intentado esto

skip_filter :require_login, :only => [:create,:new,:accept] 

pero no su trabajo, así que ¿cómo puedo hacer esto en los carriles 3.

Respuesta

11
  • skip_before_filter no ha quedado en desuso, see source.

  • Lo está usando como esperaba.

Entonces, ¿cómo dedujo que no está funcionando correctamente?

+0

sí, eso es mi error .. fuerza verlo .. gracias :) – RameshVel

+0

: D a menudo se enfrentan a la misma clase de situaciones;) – apneadiving

14

Ese es un uso incorrecto de skip_before_filter.

Con el fin de aplicar el filtro require_login exclusivamente a las acciones [:create,:new,:accept], y pasa el filtro para los demás, primero debe aplicar el filtro:

before_filter :require_login 

entonces usted debe decirle a los carriles para saltar este filtro excepto para acciones "crear, nuevo y aceptar".

skip_before_filter :require_login, :except => [:create,:new,:accept] 

también puede utilizar skip_filter, que le permite incluir before_filter, after_filter, y around_filter filtros:

skip_filter :require_login, :except => [:create,:new,:accept] 

Referencia: Rails 3.2 guide

En Rails 4.0, los métodos equivalentes son: before_action , y: skip_before_action.

Referencia: Rails 4.0 guide

+0

Esta es una buena información, gracias. – dps