フォローしているユーザの投稿を表示する機能を作りたいと思っています。
そこで、アカウントにログインしている、current_user を@userに代入したいと思っています。
@user = User.find_by(current_user.id) @follow_users = @user.followings
しかしこれだとエラーになるようで、
どのようにすれば取り出せますか?
class User follow 関連 has_many :relationships has_many :followings, through: :relationships, source: :follow has_many :reverse_of_relationships, class_name: 'Relationship', foreign_key: 'follow_id' has_many :followers, through: :reverse_of_relationships, source: :user def follow(other_user) unless self == other_user self.relationships.find_or_create_by(follow_id: other_user.id) end end def unfollow(other_user) relationship = self.relationships.find_by(follow_id: other_user.id) relationship.destroy if relationship end def following?(other_user) self.followings.include?(other_user) end
参考までに
こちらは参照されましたか?
https://teratail.com/questions/62493
回答ありがとうございます。
記事を参考にさせていただいたのですが、解決しません、、、
@user = User.where(id: current_user.id)
記事によるとこのように書けば良さそうなのですが。
どんなエラーになるか、エラーメッセージを
あと、
all_followings methodのcodeと
User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]]
↳ app/helpers/sessions_helper.rb:16:in `current_user'
User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 11]]
Completed 500 Internal Server Error in 18ms (ActiveRecord: 0.8ms | Allocations: 12675)
(current_user のidは1です)
undefined method `followings' for #
こんなエラーです。
@folow_users = @user.all_followings
のところは
@folow_users = @user.followings
に修正したうえです。
def followings
@user = User.find(params[:id])
@users = @user.followings
render 'show_follow'
end
@user = User.find(1)
で試してみると普通に機能するのですが。。。
回答1件
あなたの回答
tips
プレビュー