0

私の目標は、Rails Active Record クエリで単一のオブジェクトを返すことです。テーブルがcreated_at日付でソートされているときに、最新のレコードを取得したい。つまり、以下の例では、ID が 2 のレコードを返したいということです。以下の 4 つのクエリがすべて同じ結果を返す理由がわかりません。

販売テーブル レコード

 +----+---------+-------+------------+----------------------------+
 | ID | user_id | price | sale_date  |         created_at         |
 +----+---------+-------+------------+----------------------------+
 |  1 |       1 |   200 | 2012-08-07 | 2012-10-02 23:01:46.706727 |
 |  2 |       1 |   400 | 2009-05-11 | 2012-10-02 23:09:01.342879 |
 +----+---------+-------+------------+----------------------------+

クエリ:

 <%= current_user.sales.order("created_at").last.price %>

リターン: 200

 <%= current_user.sales.order("created_at DESC").last.price %>

リターン: 200

 <%= current_user.sales.order("created_at ASC").last.price %>

リターン: 200

 <%= current_user.sales.last.price %>

リターン: 200

私も試しました:

 <%= current_user.sales.last("created_at").price %>

戻り値:undefined method 'assert_valid_keys' for "created_at":String

4

2 に答える 2

1

Saleクラスに default_scope が定義されていて、order句が含まれている場合は、次を使用できます

.reorder("created_at DESC")

それ以外の

.order("created_at DESC")
于 2012-10-02T23:53:42.547 に答える
0

次の場合は、この魔法の呪文を試してください。

current_user.sales.sort_by(&:created_at).last
于 2012-10-03T00:05:46.297 に答える