0

は常に?と同じものを返す必要Arrayがあります。呼び出す順番が結果に影響します。Rails の部分ビューで次のコードを呼び出すと:firstat(0)

<%= debug sections.at(0) %>
<%= debug sections.first %>

両方の出力が一致します。ただし、順序を次のように切り替えると:

<%= debug sections.first %>
<%= debug sections.at(0) %>

によって返された配列の最後の項目を取得しfirstます。同様に、私がこれを行うと:

<%= debug sections.last %>
<%= debug sections.first %>
<%= debug sections.at(0) %>

最初の 2 つのエントリが一致し、最後のエントリが一致します。何が起きてる?

4

1 に答える 1

2

問題が見つかりました。sectionsデバッグでは の配列として出力されましたsectionsが、実際にActiveRecord::Relationは配列に折りたたまれていたようなものでした。その結果、 を呼び出すfirstと、実際には の結果が得firstられましたRelation。これは、何らかの理由で、実際には ID が最も高いセクション (別名「最後の」アイテム) でした。問題を修正するSection.where(...).all代わりに、クエリを返すように変換しました。Section.where(...)

于 2014-03-27T14:27:20.937 に答える