であるかどうかを確認するための正しい方法は、私は、このようなコードをしました:レコードが私の見解ではActiveRecordのコレクション
<% if @posts.any? %>
<% @posts.each do |post| %>
...
<% end %>
<% else %>
<p>No posts found</p>
<% end %>
この私のコンソールログに生成されますので、
...
Post Exists (1.4ms) SELECT 1 AS one FROM `posts` LIMIT 1 OFFSET 0
...
Post Load (1.1ms) SELECT `posts`.* FROM `posts` LIMIT 50 OFFSET 0
...
これをDB上で2つのクエリをトリガします。私はこのように表示を変更した場合
<% unless @posts.blank? %>
<% @posts.each do |post| %>
...
<% end %>
<% else %>
<p>No posts found</p>
<% end %>
一つだけのクエリがトリガされます。
...
Post Load (1.1ms) SELECT `posts`.* FROM `posts` LIMIT 50 OFFSET 0
...
私は@posts.blank?
または@posts.present?
私が行って、私が使用している場合、私は、2つのクエリを実行@posts.exists?
または@posts.empty?
または@posts.any?
を使用している場合1つのクエリのみ。
私の質問です。コレクションが空であるかどうかを確認するためのベストプラクティスがありますか?私はexists?
、empty?
、any?
、present?
およびblank?
を使用する必要がありますか? (プリロードレコードの)これをチェックした後
グレート質問です。このように条件を考えたことはありません。あなたは「プレゼント」と何を共有してもいいですか? 1つのクエリまたは2つの 'any 'のようなものは私がチェックしたが、今は自分のPCにはないだろう。 – Aakanksha
'存在?' '空白のように動作します?' – Pioz
は、あなたが私たちに正しいログを示していますか?第1のコードは、第2のコードが 'games'を使用するときに' posts'からデータをロードします。 – MrShemek