@variable

Bonjour

cela doit être un truc con mais je ne le sais pas

que je récupère un tableau de données via @variable =
Variable.find(:all,
:conditions => etc. )
cet objet vide ne sera pas nil ?
en faisant des tests de type

unless @variable then
else
end

la condition ou @variable est nil ne se remplit jamais (même quand il
n’ya
pas de données, je m’entends)
par contre avec @variable.length == 0 cela fonctionne

quelqu’un peut il éclairer ma lanterne ?

merci

Ca ne renvoie nil que dans le cas d’un find(:first), parce que là tu ne
cherche qu’un objet.

Quand tu fais un find(:all) tu demande une collection d’objets, ce qui
est
un proto-tableau, et qui n’est donc :

  • pas == nil même quand il est vide
  • pas == instance d’un objet métier quand il ne contient qu’une
    instance
    d’un objet métier

Le 22 août 2008 00:19, Michel B. [email protected] a
écrit :

ok merci de m’éclairer :wink:
NG

Toujours un plaisir.

Cordialement.


Michel B.

script/console

@variable = ObjetMetier.find :all

@variable.blank?

@variable.empty?

Remarque en passant, la doc de rails est très lisible, bien construite
et
plutôt complète…

Remarque en passant, la doc de rails est très lisible, bien construite et
plutôt complète…

tu parles des api ?

et bien, je serai plus réservé (gentil euphémisme :wink: )

merci
NG

Effectivement, un find(:all) renvoie tojours une Array, éventuellement
vide.
Pour tester s’il n’y a pas de résultat
@variable.empty?
ou @variable.blank?
Moi j’aime bien la méthode blank, car elle permet de tester si (vide ou
nil), donc d’éviter de se poser le genre de question que tu viens de
poser. Elle ne revoie pas d’erreur sur nil.blank?, alors que nil.empty?
entraine une erreur

Michel B. a écrit :

Oui, je parle de la doc de l’api. Ca tombe relativement bien, parce que,
par
exemple, voici ce que dit la doc de la méthode “find” d’un certain
ActiveRecord::Base :

find(*args)

Find operates with four different retrieval approaches:

All approaches accept an options
hashhttp://api.rubyonrails.org/classes/ActiveRecord/Base.html#M001387as
their
last
http://api.rubyonrails.org/classes/ActiveRecord/Base.html#M001300parameter

Après, peut-être que tu ne sais pas lire l’anglais, mais si la langue de
Shakespear n’est pas un obstacle pour toi j’ai l’impression que c’est
assez
clair non ?


Michel B.

2008/8/22 Michel B. [email protected]

can be found for allhttp://api.rubyonrails.org/classes/ActiveRecord/Base.html#M001301of the listed ids, then
*args) or its shortcut Model.last(*args).
Shakespear n’est pas un obstacle pour toi j’ai l’impression que c’est assez
clair non ?


Michel B.

En effet mon anglais technique est parfois un peu limite pour la doc,
et
j’ai été un peu moqueur, reste que pour retrouver une chose précise
parfois
c’est pas évident.
Tiens j’ai des select dont le hash est situé dans le model

model todo.rb

PRIORITY = [
[ “Urgent” , “1” ],
[ “Rapidement” , “2” ],
[ “Bientôt” , “3” ],
[ “Y penser” , “4” ],
[ “Quant on peut” , “5” ],
]

et la vue edit (idem new)

<%= f.label "Priorité" %><br />
<%= select     "todo",
            "priority",
            Todo::PRIORITY,
            :prompt => "Quelle priorité ?"
%>

dans les autres appli en rails 1.2.x aucun problème

mais là la vue edit ne me ressort pas ce qui a été choisi au départ

et bien dans l’api j’ai du mal à trouver … (et j’en profite pour
replacer
un problème en cours :wink: )

Je ne prétends pas que l’API est parfaite, mais quand on pose une
question Ã
laquelle l’API répond dans les premières lignes de la méthode concernée,
c’est probablement qu’on n’a pas essayé de la lire.

Ce n’est pas répréhensible en soi (la preuve, je t’ai répondu) mais bon,
n’accuse pas l’API d’être illisible si tu ne fais pas l’effort de la
lire de
temps en temps pour résoudre des petits problèmes il est logique que tu
ne
soit pas à l’aise pour trouver des choses pointues.

Pour ton problème de select, il vaudrait mieux poser la question dans un
autre thread (et il n’est pas impensable que j’essaye d’y répondre quand
tu
y auras donné quelques détails).

Cordialement.


Michel B.

Le 22 août 2008 17:08, Michel B. [email protected] a
écrit :

Je ne prétends pas que l’API est parfaite, mais quand on pose une question
à laquelle l’API répond dans les premières lignes de la méthode concernée,
c’est probablement qu’on n’a pas essayé de la lire.

Ce n’est pas répréhensible en soi (la preuve, je t’ai répondu) mais bon,
n’accuse pas l’API d’être illisible si tu ne fais pas l’effort de la lire de
temps en temps pour résoudre des petits problèmes il est logique que tu ne
soit pas à l’aise pour trouver des choses pointues.

c’est sur …
Il est vrai que les premiers contacts n’ayant pas été très concluants je
n’ai pas fouillé plus loin (on dirait une séance d’autocritique dans le
plus
pur style maoiste :wink: )

Merci en tout cas .
NG