diff --git a/app/models/user.rb b/app/models/user.rb index 47e7f8c2c..67fe5d104 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -328,7 +328,8 @@ class User < ActiveRecord::Base end def interests - follows.map{|follow| follow.followable.tags.map(&:name)}.flatten.compact.uniq + followables = follows.map(&:followable) + followables.compact.map { |followable| followable.tags.map(&:name) }.flatten.compact.uniq end private diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 25084e4d1..c201fc03c 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -667,6 +667,15 @@ describe User do expect(user.interests).to eq ["Sport"] end + it "deals gracefully with hidden proposals" do + proposal = create(:proposal, tag_list: "Sport") + create(:follow, followable: proposal, user: user) + + proposal.hide + + expect(user.interests).to eq [] + end + it "discards followed objects duplicated tags" do proposal1 = create(:proposal, tag_list: "Sport") proposal2 = create(:proposal, tag_list: "Sport")