diff options
author | re4k <re4k@re4k.info> | 2013-04-01 03:59:33 +0900 |
---|---|---|
committer | re4k <re4k@re4k.info> | 2013-04-01 03:59:33 +0900 |
commit | 90d8845257404bb445d7611f9e9c7828ec25dc34 (patch) | |
tree | 6f3d19afa530f4e9d502e55c36d64202c2878ac5 /app/models/favorite.rb | |
parent | 27bf5349f62ce11763441eb2aa8e69ee10bf9987 (diff) | |
download | aclog-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.rb | 29 |
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 |