取得したいもの
ユーザがいいねしたMessageのユーザーを取得したい
試したこと
1.Message.where(timeline_id: PostBadge.where(timeline_id: Timeline.where(timelinable_id: Message.joins(:timeline).map(&:id)).map(&:timeline_id)).map(&:timeline_id)) 2.Message.where(timeline_id: user.likes.joins(:timeline).map(&:timeline_id))
当たり前なのですがMessageにはtimeline_idがないというエラーがでました。
joinしたあとにuser.likes.joins(:timeline).messageのように取得したいのですが
何か方法があったら教えていただきたいです。
該当のソースコード
ruby
1 2#メッセージテーブル 3create_table "messages",charset: "utf8mb4", force: :cascade do |t| 4 t.integer "user_id", null: false 5 t.string "message", limit: 10000 6end 7 8#いいねテーブル 9create_table "likes",charset: "utf8mb4", force: :cascade do |t| 10 t.bigint "timeline_id", null: false 11 t.bigint "like_id", null: false 12 t.integer "user_id",null: false 13end 14 15#タイムラインテーブル 16create_table "timelines",charset: "utf8mb4", force: :cascade do |t| 17 t.bigint "timelinable_id" 18end 19
ruby
1 2class Timeline < ApplicationRecord 3 belongs_to :timelinable, polymorphic: true 4 has_many :likes 5 belongs_to :message, foregn_key: timelinable_id, optional: true 6end 7 8class Like < ApplicationRecord 9 belongs_to :timeline 10 belongs_to :user 11end 12 13class Message < ApplicationRecord 14 belongs_to :user 15 has_one :timeline, as: :timelinable 16end 17 18class User < ApplicationRecord 19 has_many :messages 20 has_many :likes 21end 22
回答1件
あなたの回答
tips
プレビュー