いつもお世話になっております。
以下のようにモデルを作成している状況です
Userモデル
- name:string
- password:string
Ornerモデル
- name: string
- password:string: string
Likeモデル
- user_id
- orner_id
オーナーがユーザーをお気に入りできることを想定しております。
Likeモデルはオーナーのidとユーザーのidをもって誰が誰をお気に入りしたかを判定しています。
ここからが質問なのですが、そのオーナーモデルがお気に入りしたものをだけを抽出したデータが欲しいと考えています。
現状以下のようにコーディングしており、お気に入りしたユーザーのみを取り出すことはできたのですが、ページネーションに用いているkaminari部分でエラーがでしまいます。
kaminariはUser.allなどの形式で渡す必要があるのでusers_aryを同じような形式にすれば解決できるとは思ってはいるのですが、正しい方法として関連モデルのみを抽出したいと考えこちらに質問させていただきました。
調べ方が悪いとは思うのですが、ググっても分からずこちらに質問させていただきました。
参考になるサイトでも構いませんので、適切な方法をご教示いただけますと幸いです。
可能であれば配列をActiveRecordの形式(User.allのような)形式に変更する方法、合わせてご教示いただけましたら助かります。
よろしくお願いいたします。
ruby
1 2#app/model/ 3# user.rb 4class User < ApplicationRecord 5 has_secure_password 6 has_many :like 7end 8 9# post.rb 10class Post < ApplicationRecord 11 has_many :like 12end 13 14# like.rb 15class Like < ApplicationRecord 16 belongs_to :investor 17end 18 19 20コントローラー 21 22 def show 23 # オーナーのお気に入りをすべて選択 24 likes = Like.where(orner_id: orner_id) 25 users_ary = [] 26 # ユーザーの情報を入れていく 27 likes.each do |like| 28 user = User.find_by(id: like.user_id) 29 if !user.nil? 30 users_ary.push(user) 31 end 32 end 33 34 # ここでエラー(kaminariではたぶんですが配列は扱えない) 35 @users = users_ary.page(params[:page]).per(Page_num) 36 37 # 以下のような形でユーザの情報を取ってきたい 38 User.where(Likeモデルの特定のorner_idの情報をkey) 39 end 40
環境
Amazon Linux release 2 (Karoo)
Rails 5.2.3
Ruby version: 2.6.1
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。