nil?メソッド
変数.nil?
このメソッドでtrueが返ってくる時はレシーバーである変数そのものが存在しない時ということになります。
empty?メソッド
変数.empty?
このメソッドでtrueが返ってくる時はレシーバーである変数に値が入っていない時ということになります。
例えばその変数がインスタンス変数であればそのインスタンス変数自体は存在するが、そのインスタンス変数に値が何も入っていない時などは、empty?メソッド使って検索することとなります。
blank?メソッド
変数.blank?
このメソッドでtrueが返ってくる時はレシーバである変数そのものが存在しないか、変数に値が入っていない時とということになります。
つまり、上記のnil?メソッドとempty?メソッドの両方の機能を足したメソッドとなります。
present?メソッド
変数.present?
present?メソッドはレシーバーである変数に値が入っていればtrueを返し値が入ってなくまたレシーバーである変数そのものが存在しない時は、falseを返します。
上記のメソッドのblank?メソッドの逆となります。
注意事項
itemが親、orderが子の1対1のリレーションの場合、item.orde.user.idとしてしまうとエラーを吐く。
あくまでも、親にたいして小がいるかどうかで判断しなければならない。
<% if item.order.present? %>
<div class='sold-out'>
<span>Sold Out!!</span>
</div>
<% end %>