この質問への答えは簡単なはずですが、アクティブ レコード クエリ ガイド、SO に関するその他の質問、または Rails コンソールをいじっても見つかりませんでした。
アクティブ レコード クエリ インターフェイスを介してデータベースにクエリを実行し、最初または最後のエントリの 1 つの列の値を返したいだけです。テーブル全体をトラバースする必要はありません (すぐに説明します)。
pluck を使用してこれを行う方法がありますが、クエリ メッセージの構造は次のとおりです。
initial = Message.where("id = ?", some_id).pluck(:value).first
final = Message.where("id = ?", some_id).pluck(:value).last
残念ながら、これは非常に非効率的な操作であり、最初または最後のエントリだけを返す前に、指定value
された に一致するすべてのレコードから属性を抽出します。id
基本的に、ステートメントを次のように並べ替えたいと思います。
initial = Message.where("id = ?", some_id).first.pluck(:value)
final = Message.where("id = ?", some_id).last.pluck(:value)
pluck
ただし、メッセージのメソッドがないことを説明する NoMethodError が表示されます。私はこれをさまざまな方法でやろうとしました:
initial = Message.where("id = ?", some_id).first(:value)
initial = Message.where("id = ?", some_id).first.select(:value)
...
しかし、すべてが何らかのエラーを返します。私は知っている
おっと
、どういうわけか私の質問の一部が途切れました(最後に私が持っていた答えを含む)-それを見つけることができるかどうかを確認しますが、select()
メソッドを使用して調査しました.selectはクエリを意味する1つの引数しかとらないことがわかりましたstring は のようなオプションの引数を取ることができないため、構築する必要がありますが、(取得しようとしている列属性はどこにありますか)id = ?, some_id
を追加するだけで機能することがわかったので、以下の回答に示すようにメソッドに切り替えました。.value
value
where