aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/retweet.rb
diff options
context:
space:
mode:
authorrhenium <rhenium@rhe.jp>2014-12-12 07:18:25 +0900
committerrhenium <rhenium@rhe.jp>2014-12-12 07:18:25 +0900
commitf2f74d11f94d1d692e34b1e31d37c0962055aca8 (patch)
tree06c1f550e521f80ff882871f0f8acf5442f49b2d /app/models/retweet.rb
parent56ae9c7ef8eb91a18db10075accf10bf248e2776 (diff)
downloadaclog-f2f74d11f94d1d692e34b1e31d37c0962055aca8.tar.gz
collector: optimize (creating model class instance is so slow)
Diffstat (limited to 'app/models/retweet.rb')
-rw-r--r--app/models/retweet.rb12
1 files changed, 8 insertions, 4 deletions
diff --git a/app/models/retweet.rb b/app/models/retweet.rb
index 0648525..cefd901 100644
--- a/app/models/retweet.rb
+++ b/app/models/retweet.rb
@@ -7,13 +7,17 @@ class Retweet < ActiveRecord::Base
#
# @param [Array] array An array of Streaming API messages.
def self.create_bulk_from_json(array)
+ return if array.empty?
+
objects = array.map do |json|
- self.new(id: json[:id],
- user_id: json[:user][:id],
- tweet_id: json[:retweeted_status][:id])
+ {
+ id: json[:id],
+ user_id: json[:user][:id],
+ tweet_id: json[:retweeted_status][:id]
+ }
end
- self.import(objects, ignore: true)
+ self.import(objects.first.keys, objects.map(&:values), ignore: true)
end
# Unregisters retweet events in bulk from array of Streaming API's delete events.