###やりたいこと・知りたいこと
if文をwhereメソッドに書き換えたいです。
現在Viewにif文を書いているのですが、Controller内にwhereメソッドを使って書き換えたいです。
view
1<% @posts.each do |post| %> 2 <% if @current_user.following?(post.user) || @current_user.id == post.user_id %> 3 <%= post.name %> 4<% else %><% end %>
こちらのif文では、「CurrentUserがフォローしている人のPost と CurrentUserのPost 」という定義です。つまりフォローしていない人のPostと自分以外のPostは非表示する仕様になっています。
しかし、ページネーション8件取り出した後に書いているため、表示件数が8より下回る場合があり、そのためにController内に移したく思っています。
###コード
Controller
1def index 2 @posts = Post.joins(:user).all.order(created_at: :desc).page(params[:page]).per(8) 3end
Model
1class User < ApplicationRecord 2 has_many :posts, dependent: :delete_all 3 has_many :active_friendships, class_name:"Friendship", foreign_key: "follower_id", dependent: :destroy 4 has_many :passive_friendships, class_name:"Friendship", foreign_key: "followed_id", dependent: :destroy 5 has_many :following, through: :active_friendships, source: :followed 6 has_many :followers, through: :passive_friendships, source: :follower 7 8 9 def follow(user) 10 active_friendships.create(followed_id: user.id) 11 end 12 def unfollow(user) 13 active_friendships.find_by(followed_id: user.id).destroy 14 end 15 def following?(user) 16 following.include?(user) 17 end 18end
Model
1class Post < ApplicationRecord 2 belongs_to :user 3end
お分かりの方、ぜひ宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/14 09:24
2019/12/14 09:33
2019/12/14 11:24
2019/12/14 12:05
2019/12/15 09:00