当调用User.last
它看起来像活动记录排序id
。Active Record的第一种方法是按ID排序吗?
User Load (1.4ms) SELECT * FROM
用户ORDER BY users.id DESC LIMIT 1
但调用User.first
当它不使用命令子句。
User Load (1.9ms) SELECT * FROM
用户LIMIT 1
因此,这是保证返回具有最低ID的用户?这似乎在实践中,但我不确定MySQL是否能保证这一点。
或者您是否必须这样做:User.first(:order => 'id')
这会强制执行订单条款。
编辑:我想这真的是MySQL的问题。是SELECT * FROM
用户LIMIT 1
保证返回用户最低的ID?
但通过ID确实AR强制排序,默认情况下mysql通过新鲜命令记录...或者我错了吗? – mpapis 2010-11-21 00:44:01
我只能假设,对于第一个默认订单,AR不做任何事情,并将订单留给数据库,这将在MySQL订单中通过插入订单进行,这恰好对应于“id ASC”。最后,这种方法不起作用,所以AR使用“id DESC”。但这只是一个猜测。 – Thilo 2010-11-21 11:01:21