aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/favorite.rb
diff options
context:
space:
mode:
authorre4k <re4k@re4k.info>2013-04-01 03:59:33 +0900
committerre4k <re4k@re4k.info>2013-04-01 03:59:33 +0900
commit90d8845257404bb445d7611f9e9c7828ec25dc34 (patch)
tree6f3d19afa530f4e9d502e55c36d64202c2878ac5 /app/models/favorite.rb
parent27bf5349f62ce11763441eb2aa8e69ee10bf9987 (diff)
downloadaclog-90d8845257404bb445d7611f9e9c7828ec25dc34.tar.gz
Add importing favs feature(partial: only status_activity).
Refactor models
Diffstat (limited to 'app/models/favorite.rb')
-rw-r--r--app/models/favorite.rb29
1 files changed, 28 insertions, 1 deletions
diff --git a/app/models/favorite.rb b/app/models/favorite.rb
index 6270534..e4fb35d 100644
--- a/app/models/favorite.rb
+++ b/app/models/favorite.rb
@@ -1,5 +1,6 @@
class Favorite < ActiveRecord::Base
- belongs_to :tweet, :counter_cache => true
+ belongs_to :tweet
+ counter_culture :tweet
belongs_to :user
scope :order_by_id, -> do
@@ -13,4 +14,30 @@ class Favorite < ActiveRecord::Base
def tweet
Tweet.cached(tweet_id)
end
+
+ def self.from_hash(hash)
+ begin
+ create!(:tweet_id => hash[:tweet_id],
+ :user_id => hash[:user_id])
+ logger.debug("Created Favorite: #{hash[:user_id]} => #{hash[:tweet_id]}")
+ rescue ActiveRecord::RecordNotUnique
+ logger.debug("Duplicate Favorite: #{hash[:user_id]} => #{hash[:tweet_id]}")
+ rescue
+ logger.error("Unknown error while inserting favorite: #{$!}/#{$@}")
+ end
+ end
+
+ def self.from_tweet_object(tweet_object)
+ if tweet_object.favoriters.is_a? Array
+ tweet_object.favoriters.each do |uid|
+ from_hash(:user_id => uid, :tweet_id => tweet_object.id)
+ end
+ end
+ end
+
+ def self.delete_from_hash(hash)
+ where(:tweet_id => hash[:tweet_id])
+ .where(:user_id => hash[:user_id])
+ .destroy_all
+ end
end