2010-06-10 6 views
1

Je recherche toutes les organisations avec l'URL "http: //" et met à jour leurs attributs à "".Rédaction d'une instruction conditionnelle simple dans IRB

Ma tentative:

Organization(:all).select { |o| o.url = "http://" ? o.update_attribute("url","")} 

qui renvoie une erreur de compilation:

SyntaxError: compile error 
(irb):2: syntax error, unexpected '}' 
    from (irb):2 

Toutes les idées?

Répondre

2

Essayez d'utiliser update_all

Organization.update_all("url = ''", ["url =?",'http://']) 
+0

Brillant. Je n'avais aucune idée de comment utiliser des conditionnels comme ça avant. Merci beaucoup. – Trip

+0

Ce que vous essayiez peut être fait à votre manière comme ceci: Organisation (: all) .select {| o | o.update_attribute ("url", "") si o.url == "http: //"} L'opérateur ternaire que vous utilisiez (le '?') attendait un ':' et une seconde condition après cela . Mais il a rencontré un '}' donc a soulevé une erreur. – Garfield

+0

@Shiker: Belle réponse .. – bragboy

0

Je ne suis en aucun cas un expert en rubis, mais ma première suspicion est que vous utilisez un opérateur d'affectation (=) au lieu d'un opérateur d'égalité (==). Une recherche rapide sur google pour "ruby irb conditionnel" semble le prouver.

Et vous avez probablement obtenu le vote négatif parce que vous n'avez pas inclus les erreurs de compilation dans votre question. Si ma supposition est fausse, je ne peux même pas aider à essayer d'interpréter le message d'erreur, parce que vous ne l'avez pas fourni. MISE À JOUR: basé sur le premier commentaire à la réponse, je crois que mon premier soupçon d'avoir tort - une mauvaise interprétation de l'intention de la ligne de code. Mais, alors, c'est ce qui arrive quand les messages d'erreur ne sont pas disponibles.

MAJ2: premier commentaire ... peut-être pas là, il a été supprimé ou peut-être que je commencé à taper au mauvais endroit ...

+0

Merci @atk. Je lis à ce sujet. J'ai essayé l'opérateur double égalité. Même erreur de compilation. J'imagine que c'est dans ma syntaxe. J'apprécie néanmoins l'aide. – Trip