2010-11-29 62 views
0
object.each do |info| 
    @user_work_history.fb_user_id = facebook_session.user.id 
    @user_work_history.city = info.location.city 
    @user_work_history.country = info.location.state 
    @user_work_history.company_name = info.company_name 
    @user_work_history.description = info.description 
    @user_work_history.start_date = info.start_date 
    @user_work_history.end_date = info.end_date 
    @user_work_history.position = info.position 
    @user_work_history.updated_at = Time.now 
    @user_work_history.save 
    end 

這裏是代碼,但內部循環數據不保存只有一條記錄被保存。Ruby on rails在循環內保存數據

回答

2

我相信你有

@user_work_history = UserWorkHistory.new 

添加到循環中的第一道防線。 (或任何型號)

+0

thnks budy它的工作原理。 – Bilal 2010-11-29 11:15:10

2

當你做這樣的循環,你需要改變實例變量的參考@user_work_history。你的循環做的是每次迭代都會更新同一個對象的狀態!

你應該做的,是每次迭代前設置@user_work_history,像這樣:

object.each do |info| 
    @user_work_history = UserWorkHistory.new(:fb_user_id => facebook_session.user.id) # for example 
    @user_work_history.city = info.location.city 
    @user_work_history.country = info.location.state 
    (...) 
    @user_work_history.save # here it saves new tuple 
end