app/models/favourite_object/favourite.rb in favourite_object-0.0.3 vs app/models/favourite_object/favourite.rb in favourite_object-0.1.0

- old
+ new

@@ -1,73 +1,76 @@ module FavouriteObject class Favourite < ActiveRecord::Base - self.table_name = "favourite_object_favourites" + self.table_name = "favourite_object_favourites" - belongs_to :target, polymorphic: true - belongs_to :owner, polymorphic: true + belongs_to :target, polymorphic: true + belongs_to :owner, polymorphic: true - # Params for creating the notification message. - serialize :params, Hash + # Params for creating the notification message. + serialize :params, Hash - mattr_accessor :views - @@views = { - message: { - template_path: Proc.new {|n| "favourite_object/#{n.target_type.underscore}/message" } - } - } + mattr_accessor :views + @@views = { + message: { + template_path: Proc.new {|n| "favourite_object/#{n.target_type.underscore}/message" } + } + } - if ActiveRecord::VERSION::MAJOR < 4 - attr_accessible :target, :owner - end + if ActiveRecord::VERSION::MAJOR < 4 + attr_accessible :target, :owner + end - def self.for_owner(owner) - where(owner_id: owner.id) - .where(owner_type: owner.class.base_class) - end + def self.find_with_target(owner, target_id, target_type, third_party_flag=false) + if third_party_flag + return Favourite.for_owner(owner).find_or_initialize_by(third_party_id: target_id, + third_party_type: target_type, third_party_flag: true) + end - def message - ActionView::Base.new( - Rails.configuration.paths["app/views"]).render( - :template => self.class.views[:message][:template_path].call(self), :formats => [:html], - :locals => {object: self.target }, :layout => false) - end + Favourite.for_owner(owner).find_or_initialize_by(target_id: target_id, + target_type: target_type) + end - #toggles the is_favourited status - def toggle - if is_favourited - self.is_favourited = false - else - self.is_favourited = true - end - self.save - end + def self.for_owner(owner) + where(owner_id: owner.id) + .where(owner_type: owner.class.base_class) + end - def favourite - self.is_favourited = true - self.save - end + def message + ActionView::Base.new( + Rails.configuration.paths["app/views"]).render( + :template => self.class.views[:message][:template_path].call(self), :formats => [:html], + :locals => {object: self.target }, :layout => false) + end - def un_favourite - self.is_favourited = false - self.save - end + #toggles the is_favourited status + def toggle + if is_favourited + self.is_favourited = false + else + self.is_favourited = true + end + self.save + end - def self.is_favourited?(owner, target_id, target_type, third_party_flag=false) - if third_party_flag - favourite = FavouriteObject::Favourite.where(owner: owner, third_party_id: target_id.to_s, - third_party_type: target_type).first - else - favourite = FavouriteObject::Favourite.where(owner: owner, target_id: target_id, - target_type: target_type).first - end + def favourite + self.is_favourited = true + self.save + end - return false if favourite.blank? || favourite.is_favourited == false + def un_favourite + self.is_favourited = false + self.save + end - return true - end + def self.is_favourited?(owner, target_id, target_type, third_party_flag=false) + favourite = self.find_with_target(owner, target_id, target_type, third_party_flag) - def self.with_type(type) - where('target_type = ?', type) - end + return false if favourite.blank? || favourite.is_favourited == false + true + end + + def self.with_type(type) + where('target_type = ?', type) + end end end