diff --git a/app/models/collection.rb b/app/models/collection.rb index b84e849636c3b47c83125d3278c0585529289c82..05e75b4a0a63331a51aa6ae285dd2dfc751c0625 100644 --- a/app/models/collection.rb +++ b/app/models/collection.rb @@ -40,7 +40,7 @@ class Collection < ApplicationRecord has_many :learning_objects, through: :collection_items, source: :collectionable, source_type: 'LearningObject' has_many :collection_items - belongs_to :owner, polymorphic: true + belongs_to :owner, polymorphic: true, counter_cache: true validates :name, :owner, presence: true validates_inclusion_of :privacy, in: %w(public private), message: 'Privacy must be public or private' diff --git a/app/models/learning_object.rb b/app/models/learning_object.rb index 18cb166798888bc3badf45f3d857a77f36d98c7d..2a4b12d7e532f7ffdffc3dfeedbfcb65b5d1ed8f 100644 --- a/app/models/learning_object.rb +++ b/app/models/learning_object.rb @@ -52,7 +52,7 @@ class LearningObject < ApplicationRecord has_many :collections, through: :collection_items has_many :attachments, class_name: 'LearningObject::Attachment', autosave: true # autosave to allow import - belongs_to :publisher, polymorphic: true + belongs_to :publisher, polymorphic: true, counter_cache: true belongs_to :language belongs_to :license belongs_to :object_type diff --git a/app/models/like.rb b/app/models/like.rb index 4b4b8cd75abd1234163f125568c2b2a0074412f6..9b57efdd6d21d4c8d04464766bbcd64a9fd7d3c3 100644 --- a/app/models/like.rb +++ b/app/models/like.rb @@ -16,7 +16,7 @@ class Like < ApplicationRecord include Trackable belongs_to :likeable, polymorphic: true, counter_cache: true - belongs_to :user + belongs_to :user, counter_cache: true validates_presence_of :user, :likeable validates :user_id, uniqueness: { scope: [:likeable_id, :likeable_type] } diff --git a/app/serializers/collection_serializer.rb b/app/serializers/collection_serializer.rb index 30417a245d39a655d527e7a2234c48d30b41f2ee..1213c0d677590d880cc4e96bb7ea516cdece37ac 100644 --- a/app/serializers/collection_serializer.rb +++ b/app/serializers/collection_serializer.rb @@ -1,6 +1,6 @@ class CollectionSerializer < ActiveModel::Serializer cache key: 'collection', expires_in: 4.hours - attributes :id, :name, :owner, :created_at, :updated_at, :description, :privacy, :score + attributes :id, :name, :owner, :created_at, :updated_at, :description, :privacy, :score, :likes_count, :review_average, :thumbnail has_many :tags has_many :subjects has_many :educational_stages diff --git a/app/serializers/user_serializer.rb b/app/serializers/user_serializer.rb index b36b9b116304623d8bc01e01c22270e59491ecdc..151abb94338cdca865403115ce1bcdfa02be9f44 100644 --- a/app/serializers/user_serializer.rb +++ b/app/serializers/user_serializer.rb @@ -1,6 +1,4 @@ class UserSerializer < ActiveModel::Serializer cache key: 'user', expires_in: 4.hours - attributes :id, :email, :name, :description, :created_at, :updated_at, :role_ids, :institution_ids, :avatar - # has_many :roles - # has_many :institutions + attributes :id, :email, :provider, :name, :description, :role_ids, :institution_ids, :avatar, :likes_count, :follows_count, :learning_objects_count, :collections_count, :created_at, :updated_at end diff --git a/db/migrate/20161125134057_add_counts_to_user.rb b/db/migrate/20161125134057_add_counts_to_user.rb new file mode 100644 index 0000000000000000000000000000000000000000..5da4a078c820b4d28bce4da3af0762a351a13c1b --- /dev/null +++ b/db/migrate/20161125134057_add_counts_to_user.rb @@ -0,0 +1,7 @@ +class AddCountsToUser < ActiveRecord::Migration[5.0] + def change + add_column :users, :likes_count, :integer, default: 0 + add_column :users, :learning_objects_count, :integer, default: 0 + add_column :users, :collections_count, :integer, default: 0 + end +end diff --git a/db/migrate/20161125153200_add_review_average_to_collection.rb b/db/migrate/20161125153200_add_review_average_to_collection.rb new file mode 100644 index 0000000000000000000000000000000000000000..538338d7120d190dbc6a01d40dbed7101e039d4c --- /dev/null +++ b/db/migrate/20161125153200_add_review_average_to_collection.rb @@ -0,0 +1,5 @@ +class AddReviewAverageToCollection < ActiveRecord::Migration[5.0] + def change + add_column :collections, :review_average, :float, default: 0.0 + end +end