Todos los ejemplos de parámetros fuertes en Rails 4 docs usan
params.require(:person).permit(:name, :age)
¿Podría alguien deconstruir y explicar qué está ocurriendo con requirey permitaquí?
ruby-on-rails-4
Erik Trautman
fuente
fuente

permitpero norequire.Respuestas:
El
paramsen un controlador se ve como un Hash, pero en realidad es una instancia deActionController::Parameters, que proporciona varios métodos comorequireypermit.El
requiremétodo garantiza que esté presente un parámetro específico y, si no se proporciona, elrequiremétodo arroja un error. Devuelve una instancia deActionController::Parameterspara la clave pasadarequire.El
permitmétodo devuelve una copia del objeto de parámetros, devolviendo solo las claves y valores permitidos. Al crear un nuevo modelo ActiveRecord, solo los atributos permitidos se pasan al modelo.Se parece mucho a la lista blanca que se incluía anteriormente en los modelos ActiveRecord, pero tiene más sentido que esté en el controlador.
fuente
trueelpermitted?método. Por defecto, una instancia de laActionController::Parametersclase volveráfalseparapermitted?respondertrueapermitted?significa que el objeto de parámetro se puede usar en la asignación masiva; de lo contrario, la aplicación arrojará un error de atributos prohibidos.permitderequirepermitir también e incluyen los parámetros necesarios en el objeto devuelto?Para ser más precisos, cuando creas, por ejemplo. haciendo
.new(...), debe haber un:personhash indicado por require y el hash de la persona solo aceptará:namee:ageindicará con un permiso.Ejemplo:
fuente
not okayvisualizan el tercer y cuarto ejemplo?