Hemos estado configurando attr_accessible
y attr_protected
en muchos campos a través de nuestra aplicación Rails 3.2. Por ahora, no realizamos pruebas para garantizar que estos campos estén protegidos.Cómo probar los campos attr_accessible en RSpec
así que decidí google algunas respuestas y tropezamos con esta solución:
RSpec::Matchers.define :be_accessible do |attribute|
match do |response|
response.send("#{attribute}=", :foo)
response.send("#{attribute}").eql? :foo
end
description { "be accessible :#{attribute}" }
failure_message_for_should { ":#{attribute} should be accessible" }
failure_message_for_should_not { ":#{attribute} should not be accessible" }
end
Pero esta solución única prueba de ver si el método está respondiendo. Lo que necesito es una forma de probar que los atributos pueden y no pueden asignarse en masa. Honestamente amo la sintaxis
it { should_not be_accessible :field_name }
it { should be_accessible :some_field }
¿Alguien tiene una mejor solución a este problema?
Considere el uso de [Permitters] (https://github.com/permitters/permitters) o [Parámetros Fuertes] (https://github.com/rails/strong_parameters) en lugar de seguridad de asignación masiva (attr_accessible + attr_protected), que se va en Rails 4. –
Ya lo uso en producción. Esto era algo de cuando ForbiddenAttributes no era la corriente principal. – WarmWaffles