在 Rails 5 中,我使用 pg
(postgresql) 作为后端数据库。现在我想通过 rails 查询并获取数据。如何在查询中使用 IN
和 ORDER(:created_at, :desc)
条件。
在 Controller 中,
PAGE_LIMIT = 5
posts = Post.where("user_id IN (?)", [1,2,3]).order(created_at: :desc)
posts = posts.paginate(params[:page], PAGE_LIMIT)
我正在编写一个自定义方法,例如,
def paginate(page, limit = 5)
page = page ? page.to_i : 1
limit = limit.to_i
offset = (page - 1) * limit
self.offset(offset).limit(limit)
end
我是 postgresql 的新手。请帮我解决这个问题?
最佳答案
假设您有 User
模型,并且您想要在 [1,2,3]
中获取具有 id
的用户
User.where("id IN (?)", [1,2,3]).order(created_at: :desc)
为了更动态
x = [1,2,3]
name = "testing123"
User.where("name = ? AND id IN (?)", name, x).order(created_at: :desc)
更多详情可以看Active Record Query
使其与分页一起工作以在此处完成数组更改
修改后的答案
PAGE_LIMIT = 5
posts_arr = Post.where("user_id IN (?)", [1,2,3]).order(created_at: :desc)
posts = Post.where(id: posts_arr.map(&:id)) #here to get active records of posts to make it working for custom pagination
posts = posts.paginate(params[:page], PAGE_LIMIT)
关于sql - Rails 5 - 如何使用 postgresql 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47827832/