diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2015-06-19 01:32:51 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2015-06-19 01:32:51 +0900 |
commit | 2e0cf3a43c391e65c186222f96f0248d5449fc99 (patch) | |
tree | b19a0204fb41a6ed8724a6c696d17b00d08d0530 | |
parent | c69c16547b28b96cd21681c1ceaebe447116528b (diff) | |
download | aclog-2e0cf3a43c391e65c186222f96f0248d5449fc99.tar.gz |
Favorite/Retweet: refactor
-rw-r--r-- | app/models/favorite.rb | 41 | ||||
-rw-r--r-- | app/models/retweet.rb | 40 |
2 files changed, 41 insertions, 40 deletions
diff --git a/app/models/favorite.rb b/app/models/favorite.rb index 701b8ca..5962f1c 100644 --- a/app/models/favorite.rb +++ b/app/models/favorite.rb @@ -2,30 +2,31 @@ class Favorite < ActiveRecord::Base belongs_to :tweet belongs_to :user - # Registers favorite event in bulk from an array of Streaming API events. - # This method doesn't update Tweet#reactions_count. - # - # @param [Array] array An array of Streaming API events. - def self.create_bulk_from_json(array) - return if array.empty? + class << self + # Registers favorite event in bulk from an array of Streaming API events. + # This method doesn't update Tweet#reactions_count. + # + # @param [Array] array An array of Streaming API events. + def create_bulk_from_json(array) + return if array.empty? - objects = array.map do |json| - { - user_id: json[:source][:id], - tweet_id: json[:target_object][:id] + keys = [:user_id, :tweet_id] + objects = array.map {|json| + [json[:source][:id], json[:target_object][:id]] } - end - self.import(objects.first.keys, objects.map(&:values), ignore: true) - end + import(keys, objects, ignore: true) + end - # Unregisters favorite event in bulk from an array of Streaming API 'unfavorite' events. - # This method doesn't update Tweet#reactions_count. - # - # @param [Array] array An array of Streaming API events. - def self.delete_bulk_from_json(array) - array.each do |json| - self.delete_all(user_id: json[:source][:id], tweet_id: json[:target_object][:id]) + # Unregisters favorite event in bulk from an array of Streaming API 'unfavorite' events. + # This method doesn't update Tweet#reactions_count. + # + # @param [Array] array An array of Streaming API events. + def delete_bulk_from_json(array) + array.each do |json| + delete_all(user_id: json[:source][:id], + tweet_id: json[:target_object][:id]) + end end end end 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 |