2010-11-14 51 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中調用函數不需要括號:-)

相關問題