SELECT count(*) AS count_all FROM "proposal_versions" WHERE
("proposal_versions".proposal_id = 2)
The failing SQL in the first example seems really dangerous, because
it apparently picks an ID at random (and this obviously works also
with non-count queries, resulting in possibly returning the wrong set
of data:
Where does the '2' come from? Neither Document or Proposal has ID 2,
they're both ID 1.
This fails:>> Document.first.proposals.first.proposal_versions.size
Do you mean Document.find(:first)... ?
=> 0
But this works:>> Proposal.find(1).proposal_versions.size
=> 2
Here's the SQL from the first statement:
SELECT count(*) AS count_all FROM "proposal_versions" WHERE
("proposal_versions".proposal_id = 2)
The failing SQL in the first example seems really dangerous, because
it apparently picks an ID at random (and this obviously works also
with non-count queries, resulting in possibly returning the wrong set
of data:
Where does the '2' come from? Neither Document or Proposal has ID 2,
they're both ID 1.
ActiveRecord::Base::first is a convenience wrapper for
ActiveRecord::Base::find(:first), according to the API. So I can't
quite see why that should make a difference.
This fails:>> Document.first.proposals.first.proposal_versions.size
Do you mean Document.find(:first)... ?
ActiveRecord::Base::first is a convenience wrapper for
ActiveRecord::Base::find(:first), according to the API. So I can't
quite see why that should make a difference.
is there a document/proposal with id=2 (you've sort of implied that
there isn't, but I'm not quite sure)
Sorry. Wasn't familiar with it. Hard to imagine rails putting in a
random id.
Can only surmise that
Document.first.proposals.first.id==2
I don't think any order is guaranteed either unless you've
specified :order somewhere so it may change randomly depending on your
database. Maybe you added a new proposal with no proposal versions in
addition to proposal with id=1. Or a new document even.