Commit 273b2c86 by Tô Ngọc Ánh

Add user following

parent 4f9d0a39
Pipeline #681 failed with stages
in 0 seconds
...@@ -3,4 +3,10 @@ class Micropost < ActiveRecord::Base ...@@ -3,4 +3,10 @@ class Micropost < ActiveRecord::Base
default_scope -> { order('created_at DESC') } default_scope -> { order('created_at DESC') }
validates :content, presence: true, length: { maximum: 140 } validates :content, presence: true, length: { maximum: 140 }
validates :user_id, presence: true validates :user_id, presence: true
def self.from_users_followed_by(user)
followed_user_ids = user.followed_user_ids
where("user_id IN (:followed_user_ids) OR user_id = :user_id",
followed_user_ids: followed_user_ids, user_id: user)
end
end end
...@@ -23,7 +23,7 @@ class User < ActiveRecord::Base ...@@ -23,7 +23,7 @@ class User < ActiveRecord::Base
end end
def feed def feed
Micropost.where("user_id = ?", id) Micropost.from_users_followed_by(self)
end end
def following?(other_user) def following?(other_user)
......
$("#follow_form").html("<%= escape_javascript(render('users/unfollow')) %>")
$("#followers").html('<%= @user.followers.count %>')
\ No newline at end of file
$("#follow_form").html("<%= escape_javascript(render('users/follow')) %>")
$("#followers").html('<%= @user.followers.count %>')
\ No newline at end of file
...@@ -146,10 +146,22 @@ describe User do ...@@ -146,10 +146,22 @@ describe User do
let(:unfollowed_post) do let(:unfollowed_post) do
FactoryGirl.create(:micropost, user: FactoryGirl.create(:user)) FactoryGirl.create(:micropost, user: FactoryGirl.create(:user))
end end
let(:followed_user) { FactoryGirl.create(:user) }
before do
@user.follow!(followed_user)
3.times { followed_user.microposts.create!(content: "Lorem ipsum") }
end
its(:feed) { should include(newer_micropost) } its(:feed) { should include(newer_micropost) }
its(:feed) { should include(older_micropost) } its(:feed) { should include(older_micropost) }
its(:feed) { should_not include(unfollowed_post) } its(:feed) { should_not include(unfollowed_post) }
its(:feed) do
followed_user.microposts.each do |micropost|
should include(micropost)
end
end
end end
end end
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment