2010-11-29 46 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