答えて
Postモデルを考えると、あなたは私だけではなかった@post = Post.order("created_at").last
(理由を行うことができます@post = Post.last
は、常にデフォルトのプライマリキー(通常はid
)でソートされるためです。これはうまくいきますが、問題が発生する可能性があるシナリオがあることは間違いありません。レコードにカスタムIDを設定する、プライマリキーの順序付け/自動番号付けに影響を与えるデータベースの変更など)。 created_at
タイムスタンプでソートすると、実際に最新のレコードが取得されます。
てみてください、ModelName
という名前のモデルのために:
record = ModelName.last
これは、テーブルのソート順を考慮していません。 postgresデータベースを使用すると失敗するでしょう – jamesc
それは失敗するでしょう...素晴らしい。あなたは失敗を避けるために何をしますか? –
モデルがポストと呼ばれている場合は、[はい、あなたはそのように
.lastメソッドを使用することができます。
>> Post.last
=> #<Post ...>
dmarkowの答えは、技術的に正しいですが、あなたはcreated_atとのインデックスを作成する必要がありますデータベースの拡大に伴ってクエリがますます遅くなる危険性があります。
「id」列が自動インクリメントの主キー(可能性が高い)であることがわかっている場合は、それが定義でインデックスであるため、単に使用してください。
また、ARELがfind(:last)内のレコードを1つだけ選択するように最適化されていない限り、すべてのレコードを選択するリスクがあります。最後に "last()"メソッド。より効率的なものに結果を制限することです:
MyModel.last(:order => "id asc", :limit => 1)
または
MyModel.first(:order => "id desc", :limit => 1)
'@post = Post.order(" created_at ")。last'は実際に正しいことをします。コンソール出力は 'SELECT" posts "。* FROM" posts "ORDER BY" posts "と同じです。" created_at "DESC LIMIT 1' – PhilT
あなたは十分に高トラフィックのテーブルの上にcreated_at
を使用してあいまいさの問題に遭遇することがあります。
例えば、試してみてください。
INSERT INTO table (created_at) VALUES (NOW());
INSERT INTO table (created_at) VALUES (NOW());
は、解像度のみの1秒を持っている同じcreated_at
を持っている可能性を秘めて、..has。ソートは特定の順序でそれらを返すでしょう。
マイクロ秒値を保存して並べ替える方がよい場合があります。
- 1. Rails 3 - 明確で未知の値で最新レコードを取得する
- 2. Rails 3.最新のアップデートを入手
- 3. Rails 3:URLで新しいレコードを作成する
- 4. Rails 3プロジェクトを最新の宝石に更新するには?
- 5. Rails 3 fields_既存のレコード/新規レコード、ファイルアップロードのレイアウトが異なる
- 6. Rails 3 Active Admin新しいレコードにプリセット値を追加
- 7. Rails 3:レコードを集計する方法
- 8. 最新のレコードを取得
- 9. 与えられたユーザの最新のレコードrails(2.3.5)
- 10. 最新のEclipse for JDK 1.5を探す
- 11. left joinの最新のレコード
- 12. Rails 3アクティブなレコードと合計
- 13. Rails 5 beta 3 ActiveRecordレコードが無効
- 14. 最新のレコードを選択するsession_id
- 15. 最新のレコードをフェッチするMySQLクエリ
- 16. タグで同様のレコードを探す
- 17. SQL Server:最新のエントリでレコードを更新するクエリ
- 18. Rails 3で宝石「ダイナミズム」を探しましょう
- 19. Railsでアソシエーションを持つレコードを更新する際の問題
- 20. MongoDB検索 - 文書内で最新のものを探す
- 21. Rails 3が複数のレコードを含むフォームを提出する
- 22. Rails 3のビュー内のレコードをグループ化しますか?
- 23. Rails 3でレコードを削除した後、更新されたビューは更新されません
- 24. SQL、最新の関連レコードを取得
- 25. MySQL:最新のレコードを取得
- 26. Rails 3 - Rails 3アプリでS3
- 27. Rails最新のレコードを選択する最善の方法を問い合わせる
- 28. Rails 2.2.3と最新のRake
- 29. Rails 3 before_filterブール値の設定と検査|ペーパーチェーン/宝探しゲーム
- 30. Rails 4レコードを更新するレーキタスク。 ts_codeで見つけてCSVで更新
あなたが話しているテーブルについてもっと知る必要があります。レコードが追加または変更されたときに自動的に更新される日時フィールドはありますか? –