aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2015-06-19 01:32:51 +0900
committerKazuki Yamaguchi <k@rhe.jp>2015-06-19 01:32:51 +0900
commit2e0cf3a43c391e65c186222f96f0248d5449fc99 (patch)
treeb19a0204fb41a6ed8724a6c696d17b00d08d0530
parentc69c16547b28b96cd21681c1ceaebe447116528b (diff)
downloadaclog-2e0cf3a43c391e65c186222f96f0248d5449fc99.tar.gz
Favorite/Retweet: refactor
-rw-r--r--app/models/favorite.rb41
-rw-r--r--app/models/retweet.rb40
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