sql - Rails 5 - 如何使用 postgresql 查询?

标签 sql ruby-on-rails postgresql sorting

在 Rails 5 中,我使用 pg(postgresql) 作为后端数据库。现在我想通过 rails 查询并获取数据。如何在查询中使用 INORDER(: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/

相关文章:

c# - 如何获取最后插入的ID?

sql - 按其他列的特定规则选择行值对

ruby-on-rails - 推送到Heroku时“different prefix”错误和“Lockfile is unreadable”错误

sql - 如何使用事件记录查询检查 Rails 5 中是否不存在记录?

ruby-on-rails - Ruby on Rails,如何制作图像标签

postgresql - Spark Dataframes UPSERT 到 Postgres 表

sql - 计算多个用户之间 SQL 中的重叠时间间隔

mysql - MariaDB/mySQL 分组嵌套 SQL 结果无法像 MSSQL 中那样工作?

sql - 高级 Postgres 的插入/更新速度下降了吗?

mysql - 如何在mysql查询中插入今天的日期?