Forum: Rails-ES (no subject)

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
81d591bf78ee92fab9a5abda19b6fe9a?d=identicon&s=25 Fernando González Macías (Guest)
on 2008-11-18 10:39
(Received via mailing list)
Hola.



Estoy haciendo una aplicación que permite descargase unos documentos en
pdf. El caso es que quiero validar que el documento seleccionado
-formado por Dia+Mes+Año+NombrePublicacion-, realmente existe en el
directorio. El caso es que intento hacer la validación en el modelo, con
un validate_on_create.



El problema es que la variable global $nombre_publicacion no se me
actualiza, aunque cambie la fecha y siempre obtengo el mensaje de error
de que el fichero no existe, pero con el nombre de fichero de la primera
selección que realizo.



Por otra parte, querría preguntar una cosa que ya pregunté hace algún
tiempo, pero no me quedó clara, y es saber, si desde una aplicación
Rails, se puede acceder a un fichero que esté situado fuera de
RAILS_ROOT y sus subcarpetas. Yo ahora mismo tengo las publicaciones en
RAILS_ROOT\public\publicaciones, pero me interesaría un repositorio
distinto y que la aplicación, pudiera acceder a los ficheros en dicho
repositorio.







Parte del código del controlador:





class DescargasController < ApplicationController



def pdf_descarga



  $nombre_publicacion =
@descarga.fecha.day.to_s+@descarga.fecha.strftime("%b")+@descarga.fecha.strftime("%y")+@publicacion.cadena+".pdf"

   send_file("#{RAILS_ROOT}/public/publicaciones/#{$nombre_publicacion}",
:type => "application/pdf")

end





def create







     @descarga = Descarga.new(params[:descarga])

     @publicacion = Publicacion.find(params[:descarga][:publicacion_id])



      respond_to do |format|

      if @descarga.save



        pdf_descarga



        return

        #format.html { redirect_to(@descarga) }

        #format.xml  { render :xml => @descarga, :status => :created,
:location => @descarga }

      else

        format.html { render :action => "new" }

        format.xml  { render :xml => @descarga.errors, :status =>
:unprocessable_entity }

      end

    end

  end





end







En el modelo, tengo lo siguiente:





class Descarga < ActiveRecord::Base

  belongs_to :publicacion

  belongs_to :user



  validates_presence_of :publicacion, :fecha



  #Valida sólo cuando se crea el objeto.

  def validate_on_create

        unless
FileTest.exist?("#{RAILS_ROOT}/public/publicaciones/#{$nombre_publicacion}")

          errors.add($nombre_publicacion, "Esta publicaci&oacute;n,no se
encuentra en el hist&oacute;rico.")

        end

  end

end



Saludos y gracias por todo.







Fernando González Macías

fgonzalez@grupojoly.com
90ea347c45cdfbc1c5767dd6304d9c10?d=identicon&s=25 Borja Martín (Guest)
on 2008-11-18 11:28
(Received via mailing list)
Respecto a la pregunta de cómo acceder a ficheros fuera del entorno de
la aplicación, basta con que indiques su ruta, ya sea relativa a
ésta("#{RAILS_ROOT}/../../../loquesea") o absoluta: send_file
"/rutafueradelaaplicacion/fichero.pdf", :type => "application/pdf"

Saludos

Fernando González Macías escribió:
81d591bf78ee92fab9a5abda19b6fe9a?d=identicon&s=25 Fernando González Macías (Guest)
on 2008-11-18 11:46
(Received via mailing list)
Ok, muchas gracias.



Anteriormente cuando lo probé, me fallaría por otro tema y lo asocié al
acceso externo. Acepta rutas UNC.



Saludos y gracias.



Fernando González Macías

fgonzalez@grupojoly.com





________________________________

De: ror-es-bounces@lists.simplelogica.net
[mailto:ror-es-bounces@lists.simplelogica.net] En nombre de Borja Martín
Enviado el: martes, 18 de noviembre de 2008 11:28
Para: La lista sobre Ruby On Rails (rubyonrails.com) en castellano
Asunto: Re: [Ror-es] (no subject)



Respecto a la pregunta de cómo acceder a ficheros fuera del entorno de
la aplicación, basta con que indiques su ruta, ya sea relativa a
ésta("#{RAILS_ROOT}/../../../loquesea") o absoluta: send_file
"/rutafueradelaaplicacion/fichero.pdf", :type => "application/pdf"

Saludos

Fernando González Macías escribió:

Hola.



Estoy haciendo una aplicación que permite descargase unos documentos en
pdf. El caso es que quiero validar que el documento seleccionado
-formado por Dia+Mes+Año+NombrePublicacion-, realmente existe en el
directorio. El caso es que intento hacer la validación en el modelo, con
un validate_on_create.



El problema es que la variable global $nombre_publicacion no se me
actualiza, aunque cambie la fecha y siempre obtengo el mensaje de error
de que el fichero no existe, pero con el nombre de fichero de la primera
selección que realizo.



Por otra parte, querría preguntar una cosa que ya pregunté hace algún
tiempo, pero no me quedó clara, y es saber, si desde una aplicación
Rails, se puede acceder a un fichero que esté situado fuera de
RAILS_ROOT y sus subcarpetas. Yo ahora mismo tengo las publicaciones en
RAILS_ROOT\public\publicaciones, pero me interesaría un repositorio
distinto y que la aplicación, pudiera acceder a los ficheros en dicho
repositorio.







Parte del código del controlador:





class DescargasController < ApplicationController



def pdf_descarga



  $nombre_publicacion =
@descarga.fecha.day.to_s+@descarga.fecha.strftime("%b")+@descarga.fecha.strftime("
<mailto:)+@descarga.fecha.strftime(> %y")+@publicacion.cadena+"
<mailto:)+@publicacion.cadena+> .pdf"

   send_file("#{RAILS_ROOT}/public/publicaciones/#{$nombre_publicacion}",
:type => "application/pdf")

end





def create







     @descarga = Descarga.new(params[:descarga])

     @publicacion = Publicacion.find(params[:descarga][:publicacion_id])



      respond_to do |format|

      if @descarga.save



        pdf_descarga



        return

        #format.html { redirect_to(@descarga) }

        #format.xml  { render :xml => @descarga, :status => :created,
:location => @descarga }

      else

        format.html { render :action => "new" }

        format.xml  { render :xml => @descarga.errors, :status =>
:unprocessable_entity }

      end

    end

  end





end







En el modelo, tengo lo siguiente:





class Descarga < ActiveRecord::Base

  belongs_to :publicacion

  belongs_to :user



  validates_presence_of :publicacion, :fecha



  #Valida sólo cuando se crea el objeto.

  def validate_on_create

        unless
FileTest.exist?("#{RAILS_ROOT}/public/publicaciones/#{$nombre_publicacion}")

          errors.add($nombre_publicacion, "Esta publicaci&oacute;n,no se
encuentra en el hist&oacute;rico.")

        end

  end

end



Saludos y gracias por todo.







Fernando González Macías

fgonzalez@grupojoly.com









________________________________
This topic is locked and can not be replied to.