2013-08-29 27 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] 

作品象徵着它!