Addded Diaspora::Likeable module. Corrected the unique index for likes to include author_id; extracted before_save callback needed for tags into Diaspora::Taggable.
This commit is contained in:
parent
d364f158b8
commit
67882c775e
8 changed files with 27 additions and 19 deletions
|
|
@ -14,6 +14,7 @@ class Comment < ActiveRecord::Base
|
|||
|
||||
include Diaspora::Socketable
|
||||
include Diaspora::Taggable
|
||||
include Diaspora::Likeable
|
||||
|
||||
acts_as_taggable_on :tags
|
||||
extract_tags_from :text
|
||||
|
|
@ -25,8 +26,6 @@ class Comment < ActiveRecord::Base
|
|||
belongs_to :post, :touch => true
|
||||
belongs_to :author, :class_name => 'Person'
|
||||
|
||||
has_many :likes, :conditions => {:positive => true}, :dependent => :delete_all, :as => :target
|
||||
|
||||
validates_presence_of :text, :post
|
||||
validates_length_of :text, :maximum => 2500
|
||||
|
||||
|
|
@ -62,10 +61,4 @@ class Comment < ActiveRecord::Base
|
|||
def parent= parent
|
||||
self.post = parent
|
||||
end
|
||||
|
||||
# @return [Integer]
|
||||
def update_likes_counter
|
||||
self.likes_count = self.likes.count
|
||||
self.save
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@ class Like < ActiveRecord::Base
|
|||
|
||||
xml_attr :target_type
|
||||
include Diaspora::Relayable
|
||||
|
||||
include Diaspora::Socketable
|
||||
|
||||
xml_attr :positive
|
||||
|
|
|
|||
|
|
@ -9,13 +9,13 @@ class Post < ActiveRecord::Base
|
|||
include Diaspora::Webhooks
|
||||
include Diaspora::Guid
|
||||
|
||||
include Diaspora::Likeable
|
||||
|
||||
xml_attr :diaspora_handle
|
||||
xml_attr :public
|
||||
xml_attr :created_at
|
||||
|
||||
has_many :comments, :dependent => :destroy
|
||||
has_many :likes, :conditions => {:positive => true}, :dependent => :delete_all, :as => :target
|
||||
has_many :dislikes, :conditions => {:positive => false}, :class_name => 'Like', :dependent => :delete_all, :as => :target
|
||||
|
||||
has_many :aspect_visibilities
|
||||
has_many :aspects, :through => :aspect_visibilities
|
||||
|
|
@ -52,12 +52,6 @@ class Post < ActiveRecord::Base
|
|||
new_post
|
||||
end
|
||||
|
||||
# @return [Integer]
|
||||
def update_likes_counter
|
||||
self.likes_count = self.likes.count
|
||||
self.save
|
||||
end
|
||||
|
||||
# @return Returns true if this Post will accept updates (i.e. updates to the caption of a photo).
|
||||
def mutable?
|
||||
false
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@ class StatusMessage < Post
|
|||
|
||||
serialize :youtube_titles, Hash
|
||||
|
||||
before_create :build_tags
|
||||
after_create :create_mentions
|
||||
|
||||
def text(opts = {})
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ class LikesOnComments < ActiveRecord::Migration
|
|||
SET target_type = 'Post'
|
||||
SQL
|
||||
|
||||
add_index :likes, [:target_id, :target_type], :unique => true
|
||||
add_index :likes, [:target_id, :author_id, :target_type], :unique => true
|
||||
end
|
||||
|
||||
def self.down
|
||||
|
|
|
|||
|
|
@ -123,6 +123,7 @@ ActiveRecord::Schema.define(:version => 20110707234802) do
|
|||
|
||||
add_index "likes", ["author_id"], :name => "likes_author_id_fk"
|
||||
add_index "likes", ["guid"], :name => "index_likes_on_guid", :unique => true
|
||||
add_index "likes", ["target_id", "author_id", "target_type"], :name => "index_likes_on_target_id_and_author_id_and_target_type", :unique => true
|
||||
add_index "likes", ["target_id"], :name => "index_likes_on_post_id"
|
||||
|
||||
create_table "mentions", :force => true do |t|
|
||||
|
|
|
|||
20
lib/diaspora/likeable.rb
Normal file
20
lib/diaspora/likeable.rb
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
# Copyright (c) 2010, Diaspora Inc. This file is
|
||||
# licensed under the Affero General Public License version 3 or later. See
|
||||
# the COPYRIGHT file.
|
||||
|
||||
module Diaspora
|
||||
module Likeable
|
||||
def self.included(model)
|
||||
model.instance_eval do
|
||||
has_many :likes, :conditions => {:positive => true}, :dependent => :delete_all, :as => :target
|
||||
has_many :dislikes, :conditions => {:positive => false}, :class_name => 'Like', :dependent => :delete_all, :as => :target
|
||||
end
|
||||
end
|
||||
|
||||
# @return [Integer]
|
||||
def update_likes_counter
|
||||
self.likes_count = self.likes.count
|
||||
self.save
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -11,6 +11,8 @@ module Diaspora
|
|||
cattr_accessor :field_with_tags
|
||||
end
|
||||
model.instance_eval do
|
||||
before_create :build_tags
|
||||
|
||||
def extract_tags_from sym
|
||||
self.field_with_tags = sym
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in a new issue