2013-08-29 26 views
0

我想做一个简单的导入后台作业,使用resque导入一些csv信息。Resque无法更新对象 - 导轨

作业运行,但一旦我编辑好像它毁了什么的......

一旦作业运行时,它会发现第一个林的用户对象...然后在@ user.name它没有被设置,然后它不能保存。我可以在我的控制台中运行此代码,并且它工作得很好,只能在resque中破解。是否有限制,您不能使用对象或使用resque写入数据库?迄今为止浪费了6个小时尝试无数事情......请帮助。

def self.perform(chunk) 
    chunk.each do |i| 
     @user = User.where(:email => i[:email].to_s).first_or_initialize 
     @user.name = i[:name].to_s 
     if @user.save 
      puts @user.email 
      entity = Entity.find_by_email_domain(@user.email) 
      eur = EntityUser.where(:entity_id => entity.id, :user_id => @user.id).first_or_initialize 
      if eur.save 
       puts "Start: BLARGITY End" 
       topic = Topic.where(:number => i[:course_number].to_s).first_or_initialize 
       eu = TopicUser.where(:topic_id => topic.id, :user_id => user.id, :role_i => 1).first_or_initialize 
      else 
       eu = TopicUser.where(:topic_id => topic.id, :user_id => user.id).first_or_initialize 
      end 
     eu.save 
     end 
    end 

end 

end 

我只是想与做,而不是寻找这样的,你可以看到现在的错误..

NoMethodError:未定义的方法`名称=”的零:NilClass

@user = User.find_by_email(i[:email]) 
    puts "sdfdsf" 
    @user.name = i[:name] 
    puts @user.name 

回答

0

我正在使用smarter_csv发送'chunk',这是一个散列。我想当redis序列化一个散列时,你需要在开始使用它之前对它进行符号化。

chunk.each do |i| 
     i.symbolize_keys! 
     @user = User.find_by_email(i[:email]) 
     @user.name = i[:name] 

作品象征着它!