ruby-on-rails - 模型中的 Koala 批处理操作

标签 ruby-on-rails ruby koala

我有一个 Ruby on Rails 应用程序,允许用户使用他们的 Facebook 帐户登录。我希望能够获得用户列表及其 Facebook 数据。我已经能够完成此操作,但是我必须为每个用户的姓名发送请求,并且我想将其作为批处理操作执行。我怎样才能将它放入我的用户模型中?

用户模型

class User < ActiveRecord::Base
  attr_accessible :uid

  def facebook_name
    Koala::Facebook::API.new.get_object(uid)["name"].to_s
  end
end

低效代码示例

users = Users.all

users.each do |user|
  puts user.facebook_name
end

最佳答案

使用后台任务(例如 https://github.com/collectiveidea/delayed_job )填充数据库中的数据。

例如

class User
 after_create :delayed_populate

 def populate_from_facebook
   self.facebook_name = Koala::Facebook::API.new.get_object(uid)["name"].to_s
 end

 def delayed_populate
   delay.populate_from_facebook
 end 
end

然后,完成后,它只是一个常规模型数据库来遍历它们,因为这些字段将缓存在您的数据库中。您真的不想在响应另一个 HTTP 请求期间发出 HTTP api 请求。

关于ruby-on-rails - 模型中的 Koala 批处理操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14634040/

相关文章:

ruby-on-rails - 我如何为 erb 中的复选框赋值?

ruby-on-rails-3 - 让 OmniAuth、Devise 和 Koala 协同工作

ruby-on-rails - OAuthException : This authorization code has been used - Facebook

ruby-on-rails - 在没有 Gemfile 的 Dockerfile 中安装 gems

ruby-on-rails - assert_select rails 中的第一个和第二个 html 表格单元格内容

jquery - Rails : f. 关联和可点击图像

ruby-on-rails - 考拉在帖子上获得点赞

ruby-on-rails - 在 RedisStore 变得不可用时回退到 FileStore

css - 在 Gentoo 上安装 Sass

ruby - 为什么散列上的 ||= 重新分配错误值?