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

user.each do |u| 

    b = get_id_blah() 

    u.some_id = b.id 
    u.save 

end 

我得到的错误:为什么我的更新在每个循环中失败?

[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) 

我应该调用保存的循环之外?

+0

什么呢?你为什么改变ID? – alternative 2010-11-14 13:48:57

+0

some_id不是PK,它是自定义的东西(来自另一个平台上的外部资源的ID) – Blankman 2010-11-14 21:46:41

回答

2

这可能只是一个错字,但它可以解释你没有方法错误

users = User.all() 

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


end 

它应该是这样的

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

或者干脆

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

不,这不是问题不妥。 – Blankman 2010-11-14 21:46:12

+0

好的,你可以重新发布你更正的代码吗? – 2010-11-16 02:21:11

0

是你确定你这是确切的代码?这听起来像您所呼叫object.update,而不是仅仅调用object.save

顺便说一句,如果你在Ruby中调用函数不需要括号:-)

相关问题