Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6127721
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 23, 20262026-05-23T16:32:39+00:00 2026-05-23T16:32:39+00:00

I have a query like this: locations = Location.order(‘id ASC’).limit(10) which returns an array

  • 0

I have a query like this:

locations = Location.order('id ASC').limit(10)

which returns an array of 500 or so records – all the records in the table – i.e. the limit clause is being ignored.

Yet if I put a .all on the end:

locations = Location.order('id ASC').limit(10).all

it works and returns 10 records.

This code is being run in a rake task and I am using PostgreSQL if that makes any difference.

Why is it doing that? Surely the .all should not be required. What am I missing?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-23T16:32:40+00:00Added an answer on May 23, 2026 at 4:32 pm

    I think the behaviour depends on how you are handling the locations variable after setting it. This is because Location.order('id ASC').limit(10) isn’t querying records but is returning an object of type ActiveRecord::Relation. The query will only occur once you call all, first, each, map, etc. on that object.

    In my testing,

    Location.order('id ASC').limit(10).map { |l| l.id }
    

    returns an array of 10 ids as you would expect. But

    Location.order('id ASC').limit(10).count
    

    returns the total number of locations in the database, because it executes the SQL

    SELECT COUNT(*) FROM "locations" LIMIT 10
    

    which returns the full count of location rows (the limit is on the number of rows returned, not the count itself).

    So if you are treating the result of Location.order('id ASC').limit(10) as an array by iterating through it, you should get the same result as if you had added all. If you are calling count, you will not. Kind of unfortunate, as I think ideally they should behave the same and you shouldn’t have to know that you are dealing with an ActiveRecord::Relation instead of an array.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a query like this: SELECT TABLE_NAME, COLUMN_NAME, IS_NULLABLE, DATA_TYPE FROM MY_DB.INFORMATION_SCHEMA.COLUMNS WHERE
I have a query like this: SELECT t1.id, (SELECT COUNT(t2.id) FROM t2 WHERE t2.id
I have a query like this (Mysql 5.X, PHP - formatted for legibility) $query
I have a query like this: SELECT COUNT(*) AS amount FROM daily_individual_tracking WHERE sales
Say I have a query like this: one two three, if I replace with
Say I have a query like this: select ((amount1 - amount2)/ amount1) as chg
I need to have MySQL query like this one: UPDATE table_name SET 1 =
If I have a query like this: String Category = HttpContext.Current.Request.QueryString[Product].ToString(); IQueryable<ItemFile> pressReleases =
I have a simple query like this: select * from mytable where id >
I have a MySQL query like this: SELECT *, SUM(...some SQL removed for brevety)

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.