From 51cb598ffd8665e20ac3f53a8b61da66fcc52d6b Mon Sep 17 00:00:00 2001 From: Gabriel Silva Date: Wed, 31 Aug 2016 13:06:35 +0000 Subject: [PATCH] Moves relations to concerns --- app/models/concerns/followable.rb | 5 +++++ app/models/concerns/follower.rb | 4 ++++ app/models/external_person.rb | 3 --- app/models/external_profile.rb | 3 --- app/models/person.rb | 1 - app/models/profile.rb | 3 --- 6 files changed, 9 insertions(+), 10 deletions(-) diff --git a/app/models/concerns/followable.rb b/app/models/concerns/followable.rb index cd2dc06..cfa44a4 100644 --- a/app/models/concerns/followable.rb +++ b/app/models/concerns/followable.rb @@ -1,6 +1,11 @@ module Followable extend ActiveSupport::Concern + included do + has_many :profile_followers, :as => :profile + has_many :circles, :through => :profile_followers + end + def followers person_followers = Person.joins(:owned_circles).merge(circles).uniq external_person_followers = ExternalPerson.joins(:owned_circles).merge(circles).uniq diff --git a/app/models/concerns/follower.rb b/app/models/concerns/follower.rb index ee78ebb..f16e690 100644 --- a/app/models/concerns/follower.rb +++ b/app/models/concerns/follower.rb @@ -1,6 +1,10 @@ module Follower extend ActiveSupport::Concern + included do + has_many :owned_circles, as: :owner, :class_name => "Circle" + end + def follow(profile, circles) circles = [circles] unless circles.is_a?(Array) circles.each do |new_circle| diff --git a/app/models/external_person.rb b/app/models/external_person.rb index d479054..456ae46 100644 --- a/app/models/external_person.rb +++ b/app/models/external_person.rb @@ -5,10 +5,7 @@ class ExternalPerson < ExternalProfile include ProfileEntity include Follower - has_many :owned_circles, as: :owner, :class_name => "Circle" - validates_uniqueness_of :identifier, scope: :source - validates_presence_of :source, :email, :created_at attr_accessible :source, :email, :created_at diff --git a/app/models/external_profile.rb b/app/models/external_profile.rb index b3bf687..b4eec44 100644 --- a/app/models/external_profile.rb +++ b/app/models/external_profile.rb @@ -2,9 +2,6 @@ class ExternalProfile < ActiveRecord::Base include Followable - has_many :profile_followers, :as => :profile - has_many :circles, :through => :profile_followers - def name "#{self[:name]}@#{self.source}" end diff --git a/app/models/person.rb b/app/models/person.rb index f61e693..76baaae 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -94,7 +94,6 @@ class Person < Profile has_many :following_articles, :class_name => 'Article', :through => :article_followers, :source => :article has_many :friendships, :dependent => :destroy has_many :friends, :class_name => 'Person', :through => :friendships - has_many :owned_circles, as: :owner, :class_name => 'Circle' scope :online, -> { joins(:user).where("users.chat_status != '' AND users.chat_status_at >= ?", DateTime.now - User.expires_chat_status_every.minutes) diff --git a/app/models/profile.rb b/app/models/profile.rb index 6fd9bbf..3d06f0f 100644 --- a/app/models/profile.rb +++ b/app/models/profile.rb @@ -235,9 +235,6 @@ class Profile < ApplicationRecord has_many :email_templates, :foreign_key => :owner_id - has_many :profile_followers, :as => :profile - has_many :circles, :through => :profile_followers - # has_many :followers, -> { uniq }, :through => :profile_followers, :source => :person # Although this should be a has_one relation, there are no non-silly names for -- libgit2 0.21.2