【问题标题】:rails activerecord limit after order订单后rails activerecord限制
【发布时间】:2014-12-17 21:07:54
【问题描述】:

我正在尝试使用 ActiveRecord 构建查询,但我发现在 order() 之后执行 limit() 和/或 where() 不起作用。

这是我的代码:

candidates = Candidate.order("created_at desc")
puts candidates.to_sql
#prints SELECT "candidates".* FROM "candidates"   ORDER BY created_at desc
candidates.limit(20)
puts candidates.to_sql
#prints SELECT "candidates".* FROM "candidates"   ORDER BY created_at desc
candidates.where("first_name = ?", "Josh")
puts candidates.to_sql
#prints SELECT "candidates".* FROM "candidates"   ORDER BY created_at desc

我正在使用 rails 和 activerecord (4.1.1)

【问题讨论】:

  • 顺便说一句,由于您使用的是 Rails 4,因此您可以使用更简洁的语法:Candidate.order(created_at: :desc)candidates.where(first_name: "Josh")

标签: ruby-on-rails activerecord


【解决方案1】:

我相信它可以按您的预期工作,但结果是一个新的范围,而不是调整现有的范围。即尝试这样的事情:

candidates = Candidate.order("created_at desc")
puts candidates.to_sql
#prints SELECT "candidates".* FROM "candidates"   ORDER BY created_at desc
candidates = candidates.limit(20)
puts candidates.to_sql

【讨论】:

    【解决方案2】:

    尝试链接它们:

    candidates = Candidate.where("first_name = ?", "Josh").limit(20).order("created_at desc")

    【讨论】:

    • 我无法链接它们,因为我很想动态创建查询
    猜你喜欢
    • 1970-01-01
    • 2020-12-12
    • 1970-01-01
    • 2022-10-31
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    • 1970-01-01
    • 2011-09-04
    相关资源
    最近更新 更多