我尝试使用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)
答案 0 :(得分:2)
我相信它的工作正如您所期望的那样,但结果是一个新的范围,而不是调整现有范围。即尝试这样的事情:
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
答案 1 :(得分:0)
尝试将它们链接起来:
candidates = Candidate.where("first_name = ?", "Josh").limit(20).order("created_at desc")