Running into an issue in Rspec. Let's say I have this:

```
class Book; has_many: :pages; end
class Page; belongs_to: :book; end

describe Pages
  let(:book) { create(:book) }
  let(:page) { create(:page, book: book) }
  before do
    allow(page).to receive(:last_page?).and_return(last_page)
    book.pages << page
  end

  context "weird behavior" do
    let(:last_page) { "Orange" }

    it do
      # these two pass as expected
      expect(book.pages.first).to eq page # passes, as expected
      expect(book.pages.first.last_page?).to eq "Orange" # passes, as expected

      # this is where weird things happen
      expect(book.pages.order("created_at DESC").first).to eq page # passes, as expected
      expect(book.pages.order("created_at DESC").first.last_page?).to eq "Orange" # will fail and return the actual method call
    end
  end
end

```

Why does ".order("created\_at DESC")" mess up the "allow" statement, even though the actual objects are still equal?