Commit 3f1c7b5b
Changed files (6)
app/models/activity.rb
@@ -0,0 +1,4 @@
+class Activity < ActiveRecord::Base
+ belongs_to :subject, polymorphic: true
+ belongs_to :user
+end
app/models/creation.rb
@@ -5,6 +5,7 @@ class Creation < ActiveRecord::Base
has_many :photos, -> { order :created_at }, :dependent => :destroy
has_many :favorites, :dependent => :destroy
acts_as_taggable
+ alias_method :author, :user
default_scope -> { order(:created_at => :desc) }
app/models/favorite.rb
@@ -1,4 +1,9 @@
class Favorite < ActiveRecord::Base
belongs_to :user
belongs_to :creation, :counter_cache => true, touch: true
+ after_create :create_activity
+
+ def create_activity
+ Activity.create(user: creation.author, subject: self)
+ end
end
app/models/user.rb
@@ -17,6 +17,7 @@ class User < ActiveRecord::Base
has_many :creations, :dependent => :destroy
has_many :favorites, :dependent => :destroy
has_many :tutorials, :dependent => :destroy
+ has_many :activities
has_and_belongs_to_many :interests, :join_table => 'users_interests', :autosave => true
has_one :avatar
acts_as_tagger
db/schema.rb
@@ -16,21 +16,6 @@ ActiveRecord::Schema.define(version: 20140118052950) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
- create_table "active_admin_comments", force: true do |t|
- t.integer "resource_id", null: false
- t.string "resource_type", null: false
- t.integer "author_id"
- t.string "author_type"
- t.text "body"
- t.datetime "created_at"
- t.datetime "updated_at"
- t.string "namespace"
- end
-
- add_index "active_admin_comments", ["author_type", "author_id"], name: "index_active_admin_comments_on_author_type_and_author_id", using: :btree
- add_index "active_admin_comments", ["namespace"], name: "index_active_admin_comments_on_namespace", using: :btree
- add_index "active_admin_comments", ["resource_type", "resource_id"], name: "index_active_admin_comments_on_resource_type_and_resource_id", using: :btree
-
create_table "activities", force: true do |t|
t.integer "subject_id", null: false
t.string "subject_type", null: false
spec/models/favorite_spec.rb
@@ -0,0 +1,14 @@
+require "spec_helper"
+
+describe Favorite do
+ context "#create" do
+ let(:creation) { create(:creation, user: author) }
+ let(:author) { create(:user) }
+ let(:user) { create(:user) }
+
+ it "creates a new activity" do
+ creation.favorites.create(:user => user)
+ creation.author.activities.count.should == 1
+ end
+ end
+end