我遇到ActiveRecord的问题#第一次似乎没有一直返回第一条记录。
>> Package.first
=> #<Package id: 22, name: "Test Package 4", created_at: "2009-09-11 21:10:54", updated_at: "2009-09-11 21:12:43", image_file_name: "0600-Sponsor.jpg", image_content_type: "image/jpeg", image_file_size: 29433>
我真正希望看到的是:
>> Package.first(:order => :id)
=> #<Package id: 13, name: "Default Package", created_at: "2009-09-03 20:54:08", updated_at: "2009-09-10 20:27:25", image_file_name: "Screen_shot_2009-09-10_at_3.16.59_PM.png", image_content_type: "image/png", image_file_size: 79386>
有谁知道默认排序顺序是什么?我应该使用:order =&gt;创建default_scope吗? :ID?我甚至不确定如何在我的开发机器上重现这种行为。
答案 0 :(得分:1)
当涉及到检索记录的顺序时,SQL不做任何保证(当然,除非给出ORDER BY
关键字)。
答案 1 :(得分:1)
答案 2 :(得分:1)
以上答案并非完全正确。 根据{{3}} 'first'将返回第一条记录,默认情况下按主键按升序排序。
话虽如此,我经历过,在使用复杂查询时,postgresql并不总是如此。例如,如果您事先对其进行排序或具有默认范围。
Cat.order('id desc').first
然后它不会按升序排列。 此外,如果您的模型的范围是另一个模型
Cat.families.first
也可以更改默认顺序。