He estado leyendo sobre cuestiones de seguridad de los raíles y el que más me preocupa es la asignación masiva. Mi aplicación está haciendo uso de attr_accessible, sin embargo, no estoy seguro si sé exactamente cuál es la mejor forma de manejar las relaciones expuestas. Supongamos que tenemos un sitio web básico de creación/propiedad de contenido. Un usuario puede crear publicaciones de blog y tener una categoría asociada a esa publicación de blog.rails: preocupación por la seguridad de asignación de masa con relationships_to relationships
así que tengo tres modelos:
- usuario
- mensaje: pertenece a un usuario y una categoría
- categoría: pertenece al usuario
I permitir la asignación masiva en el id_categoría, por lo que el usuario podría anularlo, c colgarlo en una de sus categorías, o mediante la asignación masiva, supongo que podrían cambiarlo a la categoría de otra persona. Ahí es donde no estoy seguro de cuál sería la mejor manera de proceder.
los recursos que han investigado (particularmente railscast #178 y una resource que se proporcionó a partir de ese Railscast), ambos mencionar que la asociación no debe ser masa asignable, que tiene sentido. Simplemente no estoy seguro de qué otra manera permitir al usuario cambiar lo que la categoría de la publicación sería de una manera railsy.
¿Alguna idea sobre la mejor manera de resolver esto? ¿Lo estoy mirando de la manera incorrecta?
ACTUALIZACIÓN: Espero aclarar mi preocupación un poco más.
Digamos que estoy en Post, debo tener algo como lo siguiente:
def create
@post = Post.new(params[:category])
@post.user_id = current_user.id
# CHECK HERE IF REQUESTED CATEGORY_ID IS OWNED BY USER
# continue on as normal here
end
Eso parece mucho trabajo? Tendría que verificarlo en cada controlador tanto en la actualización como en la acción de creación. Tenga en cuenta que hay más de una relación belongs_to.
Otra respuesta fue muy útil, pero esto es lo que realmente resolvió mi problema, por lo tanto lo estoy aceptando. – dpb