【发布时间】:2017-07-27 00:52:29
【问题描述】:
我知道这可能有点简单,但我对 SQL 不太擅长,到目前为止我还没有看到它在头上: 我想在它们被“收藏”时对我的 Rails 控制器中的帖子进行排序,即。 “最喜欢”关系的创建时间”
这是我尝试的控制器:
def recent_favorites
recent_favorites = "SELECT posts.id
FROM posts
JOIN favorites ON favorited_id = posts.id
GROUP BY posts.id
ORDER BY favorites.created_at DESC"
@title = 'Recently Favorited'
@user = User.friendly.find(params[:id])
@posts = @user.favorite_posts.where("posts.id IN (#{recent_favorites})")
end
这是我的桌子:
create_table "favorites", force: :cascade do |t|
t.string "favorited_type"
t.integer "favorited_id"
t.integer "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["favorited_type", "favorited_id"], name: "index_favorites_on_favorited_type_and_favorited_id"
t.index ["user_id"], name: "index_favorites_on_user_id"
end
create_table "posts", force: :cascade do |t|
t.string "post_type"
t.text "content"
t.string "body_parts"
t.integer "duration"
t.text "equipment"
t.integer "calories"
t.text "ingredients"
t.integer "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "picture"
t.string "title"
t.integer "carbs"
t.integer "fat"
t.integer "protein"
t.index ["user_id"], name: "index_posts_on_user_id"
end
完成这项工作我缺少什么?
谢谢你,
【问题讨论】:
-
您当前的查询有什么问题?我认为你不需要
GROUP BY。
标签: mysql sql ruby-on-rails sorting join