所以我试图找到所有在同一张图片下发表评论的用户。
在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
由于media
与comments
而不是users
直接关联,因此您应该具有:
@users = User.joins(comments: :media).where(comments: {media_id: @medium.id})