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