轨道抛出错误:在用户上找不到名为"media"的关联;也许你拼错了?



所以我试图找到所有在同一张图片下发表评论的用户。

在psql终端中,我写了这篇文章,它为我提供了我需要的所有信息:

    select * from users
inner join comments on users.id = comments.user_id
inner join media on media.id = comments.media_id
where media_id = 1

现在在Rails中,我正在做以下工作:

@users = User.joins(:comments, :media).where(media_id = @medium.id)

我认为这应该有效。但在我看来,当试图从@users打印出所有用户名时,会抛出以下错误:

Association named 'media' was not found on User; perhaps you misspelled it?

我这里的加入条款写错了吗?

DB架构:

create_table "media", force: true do |t|
    # Unrelevant columns
    t.integer  "user_id"
  end
  add_index "media", ["user_id"], name: "index_media_on_user_id", using: :btree
  create_table "comments", force: true do |t|
    # Unrelevant columns
    t.integer  "user_id",                 null: false
    t.integer  "media_id",                null: false
  end
  add_index "comments", ["media_id"], name: "index_posts_on_media_id", using: :btree
  add_index "comments", ["user_id"], name: "index_posts_on_user_id", using: :btree
  create_table "users", force: true do |t|
    t.string   "name",                   default: "", null: false
  end

由于mediacomments而不是users直接关联,因此您应该具有:

@users = User.joins(comments: :media).where(comments: {media_id: @medium.id})

最新更新