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) %>

前两个条目匹配,最后一个匹配。这里发生了什么?

4

1 回答 1

2

我发现了问题。sections打印为调试中的数组sections,但实际上ActiveRecord::Relation是一种折叠成数组的数组。结果,通过调用,first我实际上得到了firston 的结果Relation,无论出于何种原因,它实际上是具有最高 id 的部分(也就是“最后一个”项目)。将我的查询转换为返回Section.where(...).all而不是Section.where(...)解决问题。

于 2014-03-27T14:27:20.937 回答