0

我想将从 API 检索到的数据与新 JSON 中的本地数据库数据结合起来。但我认为我做错了。这是我的代码:

@data = ActiveSupport::JSON.decode(@api_data)
@data.each do |key|
  if key['state'] == "active"
    user_id = key['id']
    user_database = User.where(:user_id => user_id).take
    @userlist = []
    unless user_database.blank?
      user_data = {
        :user_id => key['id'],
        :enrolement_start_date => key['start_at'],
        :enrolement_end_date => key['end_at'],
        :user_interest => user_database.interests,
        :user_discipline_id => user_database.discipline_id,
      }
      @userlist.push(user_data)
    end
  end
end
@userlist = @userlist.to_json

实际上,它正在工作,但我只收到最后一个用户。我不知道如何使它工作:-/ 非常感谢提前!

4

1 回答 1

1
@userlist = []

那条线,每次通过循环

@data.each do |key|

正在通过重新初始化@userlist 清除以前的数据。然后您将返回您上次添加的用户,因为上次您将空数组分配给@userlist 时,所有其他用户都被丢弃了。

动起来

@userlist = []

多于

@data.each do |key|

你应该很好。

于 2013-08-06T23:42:29.657 回答