(no subject)

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 =
@removed_email_address@domain.invalid("%b")[email protected]("%y")[email protected]+".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órico.")

    end

end

end

Saludos y gracias por todo.

Fernando González Macías

[email protected]

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ó:

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

[email protected]


De: [email protected]
[mailto:[email protected]] 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 =
@removed_email_address@domain.invalid(“%b”)[email protected]("
mailto:)[email protected]( %y")[email protected]+"
mailto:)[email protected]+ .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órico.")

    end

end

end

Saludos y gracias por todo.

Fernando González Macías

[email protected]