2010-11-14 1 views
0
users = User.all() 

user.each do |u| 

    b = get_id_blah() 

    u.some_id = b.id 
    u.save 

end 

Je reçois l'erreur:Pourquoi ma mise à jour échoue-t-elle dans chaque boucle?

[email protected]/gems/activemodel-3.0.1/lib/active_model/attribute_methods.rb:364:in `method_missing': private method `update' called for #<User:0x1017b8188> (NoMethodError) 

Devrais-je appeler save en dehors de la boucle?

+0

QUOI? Pourquoi changez-vous l'identifiant? – alternative

+0

le some_id n'est pas un PK, c'est quelque chose de personnalisé (un ID d'une ressource externe sur une autre plate-forme) – Blankman

Répondre

2

Cela pourrait juste être une faute de frappe, mais il pourrait expliquer votre non-méthode d'erreur

users = User.all() 

user**s**.each do |u| 


end 

Il devrait être quelque chose comme

users = User.all 
users.each do |user| 
    .... 
end 

Ou tout simplement

User.all.each do |user| 
    ... 
end 
+0

non ce n'est pas le problème unfort. – Blankman

+0

ok, pouvez-vous republier votre code corrigé alors? –

0

Est-ce vous êtes sûr que c'est le code exact? On dirait que vous appelez object.update au lieu de simplement appeler object.save

Par ailleurs, vous n'avez pas besoin entre parenthèses si vous appelez fonctions Ruby :-)

Questions connexes