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::Socketable
|
||||||
include Diaspora::Taggable
|
include Diaspora::Taggable
|
||||||
|
include Diaspora::Likeable
|
||||||
|
|
||||||
acts_as_taggable_on :tags
|
acts_as_taggable_on :tags
|
||||||
extract_tags_from :text
|
extract_tags_from :text
|
||||||
|
|
@ -25,8 +26,6 @@ class Comment < ActiveRecord::Base
|
||||||
belongs_to :post, :touch => true
|
belongs_to :post, :touch => true
|
||||||
belongs_to :author, :class_name => 'Person'
|
belongs_to :author, :class_name => 'Person'
|
||||||
|
|
||||||
has_many :likes, :conditions => {:positive => true}, :dependent => :delete_all, :as => :target
|
|
||||||
|
|
||||||
validates_presence_of :text, :post
|
validates_presence_of :text, :post
|
||||||
validates_length_of :text, :maximum => 2500
|
validates_length_of :text, :maximum => 2500
|
||||||
|
|
||||||
|
|
@ -62,10 +61,4 @@ class Comment < ActiveRecord::Base
|
||||||
def parent= parent
|
def parent= parent
|
||||||
self.post = parent
|
self.post = parent
|
||||||
end
|
end
|
||||||
|
|
||||||
# @return [Integer]
|
|
||||||
def update_likes_counter
|
|
||||||
self.likes_count = self.likes.count
|
|
||||||
self.save
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,6 @@ class Like < ActiveRecord::Base
|
||||||
|
|
||||||
xml_attr :target_type
|
xml_attr :target_type
|
||||||
include Diaspora::Relayable
|
include Diaspora::Relayable
|
||||||
|
|
||||||
include Diaspora::Socketable
|
include Diaspora::Socketable
|
||||||
|
|
||||||
xml_attr :positive
|
xml_attr :positive
|
||||||
|
|
|
||||||
|
|
@ -9,13 +9,13 @@ class Post < ActiveRecord::Base
|
||||||
include Diaspora::Webhooks
|
include Diaspora::Webhooks
|
||||||
include Diaspora::Guid
|
include Diaspora::Guid
|
||||||
|
|
||||||
|
include Diaspora::Likeable
|
||||||
|
|
||||||
xml_attr :diaspora_handle
|
xml_attr :diaspora_handle
|
||||||
xml_attr :public
|
xml_attr :public
|
||||||
xml_attr :created_at
|
xml_attr :created_at
|
||||||
|
|
||||||
has_many :comments, :dependent => :destroy
|
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 :aspect_visibilities
|
||||||
has_many :aspects, :through => :aspect_visibilities
|
has_many :aspects, :through => :aspect_visibilities
|
||||||
|
|
@ -52,12 +52,6 @@ class Post < ActiveRecord::Base
|
||||||
new_post
|
new_post
|
||||||
end
|
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).
|
# @return Returns true if this Post will accept updates (i.e. updates to the caption of a photo).
|
||||||
def mutable?
|
def mutable?
|
||||||
false
|
false
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,6 @@ class StatusMessage < Post
|
||||||
|
|
||||||
serialize :youtube_titles, Hash
|
serialize :youtube_titles, Hash
|
||||||
|
|
||||||
before_create :build_tags
|
|
||||||
after_create :create_mentions
|
after_create :create_mentions
|
||||||
|
|
||||||
def text(opts = {})
|
def text(opts = {})
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ class LikesOnComments < ActiveRecord::Migration
|
||||||
SET target_type = 'Post'
|
SET target_type = 'Post'
|
||||||
SQL
|
SQL
|
||||||
|
|
||||||
add_index :likes, [:target_id, :target_type], :unique => true
|
add_index :likes, [:target_id, :author_id, :target_type], :unique => true
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.down
|
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", ["author_id"], :name => "likes_author_id_fk"
|
||||||
add_index "likes", ["guid"], :name => "index_likes_on_guid", :unique => true
|
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"
|
add_index "likes", ["target_id"], :name => "index_likes_on_post_id"
|
||||||
|
|
||||||
create_table "mentions", :force => true do |t|
|
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
|
cattr_accessor :field_with_tags
|
||||||
end
|
end
|
||||||
model.instance_eval do
|
model.instance_eval do
|
||||||
|
before_create :build_tags
|
||||||
|
|
||||||
def extract_tags_from sym
|
def extract_tags_from sym
|
||||||
self.field_with_tags = sym
|
self.field_with_tags = sym
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue