diff options
Diffstat (limited to 'app/models/retweet.rb')
-rw-r--r-- | app/models/retweet.rb | 40 |
1 files changed, 20 insertions, 20 deletions
diff --git a/app/models/retweet.rb b/app/models/retweet.rb index cefd901..b67bd72 100644 --- a/app/models/retweet.rb +++ b/app/models/retweet.rb @@ -2,29 +2,29 @@ class Retweet < ActiveRecord::Base belongs_to :tweet belongs_to :user - # Registers retweet event in bulk from an array of Streaming API messages. - # This doesn't update Tweet#reactions_count. - # - # @param [Array] array An array of Streaming API messages. - def self.create_bulk_from_json(array) - return if array.empty? + class << self + # Registers retweet event in bulk from an array of Streaming API messages. + # This doesn't update Tweet#reactions_count. + # + # @param [Array] array An array of Streaming API messages. + def create_bulk_from_json(array) + return if array.empty? - objects = array.map do |json| - { - id: json[:id], - user_id: json[:user][:id], - tweet_id: json[:retweeted_status][:id] + keys = [:id, :user_id, :tweet_id] + objects = array.map {|json| + [json[:id], json[:user][:id], json[:retweeted_status][:id]] } - end - self.import(objects.first.keys, objects.map(&:values), ignore: true) - end + import(keys, objects, ignore: true) + end - # Unregisters retweet events in bulk from array of Streaming API's delete events. - # This doesn't update Tweet#reactions_count. - # - # @param [Array] array An array of Streaming API delete events. - def self.delete_bulk_from_json(array) - self.where(id: array.map {|json| json[:delete][:status][:id] }).delete_all + # Unregisters retweet events in bulk from array of Streaming API's delete events. + # This doesn't update Tweet#reactions_count. + # + # @param [Array] array An array of Streaming API delete events. + def delete_bulk_from_json(array) + ids = array.map {|json| json[:delete][:status][:id] } + where(id: ids).delete_all + end end end |