IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ruby on Rails Discussion :

validations if


Sujet :

Ruby on Rails

  1. #1
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut validations if
    Salut

    J'utilise le plugin attachement_fu

    depuis une semaine je cherche un moyen de lancer la validation que lorsque utilisateur soumet une image.

    J'ai essayé ceci dans mon model
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    validates_as_attachment :if => Proc.new {|p| not p.uploaded_data.blank? }
    ca ne marche j'ai un
    wrong argument

    Je sèche

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Citation Envoyé par bolo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    validates_as_attachment :if => Proc.new {|p| not p.uploaded_data.blank? }
    d'après la doc le validates_as_attachment sert à vérifier que tu envoie bien une image

    Code RUBY : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    validates_as_attachment :content_type => :image

    Si tu veux que la validation ne fonctionne qu'au moment que l'utilisateur envoie un fichier, c'est au niveau de la réception qu'il faut faire la vérification.

    si <%= file_field :p , :nom %>; n'est pas vide alors validates_as_attachment

  3. #3
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    si <%= file_field :p , :nom %>; n'est pas vide alors validates_as_attachment
    Je suis sur du tout, ce validates_as_attachement ne peut être appeler quand dans un model et non depuis un controller

    a+

  4. #4
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    J'ai essayé ceci

    1 avec une procédure
    erreur filemane méthode inconue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    class Enseignant < ActiveRecord::Base
      attr_reader :nom
      PROC = Proc.new {|enseignant| not enseignant.nom.blank? }
      self.keep_translations_in_model = true
      translates :recherche, :publication, :personal
     
      has_many :contributions
      has_many :enseignements, :through => :contributions
      has_one :user
     
      validates_presence_of :nom, :prenom
      has_attachment  :storage => :file_system,
                      :content_type => :image,
                      :path_prefix => "uplaod/#{table_name}",
                      :max_size => 500.kilobytes,
                      :resize_to => '250x250>' 
     
     
      #validates_as_attachment unless Proc.new {|enseignant| enseignant.filename = }
      validates_presence_of :email if PROC.call(self)
     
      def bolo
        return false
      end
     
      def adress(lanque)
        #chargement du fichier de configuration
        adresse = YAML::load(IO.read("#{RAILS_ROOT}/db/adresses.yml"))
        return adresse[self.adresse+"_"+lanque]
      end
     
      def adresses
        adresse = YAML::load(IO.read("#{RAILS_ROOT}/db/adresses.yml"))
        return adresse['adresses']
      end
     
    end
    2. before_save

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def before_save
          unless self.filename.blank?
             validates_presence_of :size, :content_type
             validate              :attachment_attributes_valid?
           end
     end
    NoMethodError in EnseignantsController#update
    undefined method `validates_presence_of' for #<Enseignant:0x301e980>
    2. surchage de la méthode validates_as_attachment

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
          def validates_as_attachment
          if self.filename.blank?
             validates_presence_of :size, :content_type
             validate              :attachment_attributes_valid?
           end
          end

    NoMethodError in EnseignantsController#update
    undefined method `filename' for Enseignant:Class.

  5. #5
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    je dis peut-être une bétise, mais dans le code suivant tu ne dois pas définir les attributs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    def before_save
          unless self.filename.blank?
             validates_presence_of : :content_type=>:image
             validate              :attachment_attributes_valid?
           end
     end

  6. #6
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    je dis peut-être une bétise, mais dans le code suivant tu ne dois pas définir les attributs
    c'est surement qui raconte n'importe quoi

    tu entends quoi par définir les attributs

  7. #7
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596

  8. #8
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    les attributs sont définis plus faut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      has_attachment  :storage => :file_system,
                      :content_type => :image,
                      :path_prefix => "uplaod/#{table_name}",
                      :max_size => 500.kilobytes,
                      :resize_to => '250x250>'

  9. #9
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    et le simple fait de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    validates_as_attachment
    ne règle pas ton problème ?

    puisqu'il reprend le has_attachment!


    heu je réfléchi tout haut là

  10. #10
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    non.

    Ce que je cherche a faire de lancer la validation en fonction d'un condition

  11. #11
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Heu, ben je suis pas d'un grande aide.

    as-tu déjà posté ici, ils sont super sympa et vachement réactif.

    Je pense qu'ils pourront t'aider.

  12. #12
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    j'ai posté une question sur group Ruby j'ai compris pourquoi ce ne marché par car validates_as_attachment est une classe méthode.

    Mais pour l'instant ce qu'ils m'ont conseillé ne marche pas non plus dans une méthode.

  13. #13
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    je peux avoir leur soluce?

  14. #14
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def validate
        self.class.validates_as_attachment
    end
    validates_as_attachment est une méthode classe. Donc pour l'appeler il faut mettre avant

    self.class

    mais le soucis je n'ai plus d'erreur mais elle ne se déclenche pas.

    Avec la methode validate se lance automatiquement normalement non ?

  15. #15
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    unless image == image

    peut-être comme ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    def validate
        self.class.validates_as_attachment unless 2 == 2
    end
    trouver sur google

  16. #16
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    J'avais déja essayer ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def validate
        self.class.validates_as_attachment unless 2 == 2
    end
    ou ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def validate
        self.class.validates_as_attachment 
    end
    la validation ne se déclenche pas.

  17. #17
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    et ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    def validate
        self.class.validates_as_attachment unless :image == :image
    end

  18. #18
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    ca change rien mais le problème ne viens pas de la condition.
    si c'etait cela ceci marcherai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      def validate
        self.class.validates_as_attachment
      end

  19. #19
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    Voila j'ai enfin trouvé

    quand on fait, le contenu n'ai jamais appelé. je n'ai pas encore bien compris pourquoi mais dès que je trouve je le poste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def validate
    ///
    end
    donc il faut utiliser before_validation :chek_filemane

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    before_validation :chek_filemane
      has_attachment  :storage => :file_system,
                      :content_type => :image,
                      :path_prefix => "uplaod/#{table_name}",
                      :max_size => 500.kilobytes,
                      :resize_to => '250x250>' 
      def chek_filemane
        self.class.validates_as_attachment unless self.filename.blank?
      end

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. test et validation de votre programme!!!
    Par l'indien dans le forum C
    Réponses: 8
    Dernier message: 25/06/2003, 15h43
  2. validation d'un XML schema
    Par nicolas_jf dans le forum Valider
    Réponses: 2
    Dernier message: 05/05/2003, 11h25
  3. est ce un XSchema Valide?
    Par Slash dans le forum Valider
    Réponses: 4
    Dernier message: 06/03/2003, 14h01
  4. tester si une date est valide
    Par Andry dans le forum Langage
    Réponses: 5
    Dernier message: 17/09/2002, 11h54
  5. [VB6] Evenement validate
    Par grosjej dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 05/09/2002, 15h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo