i (very often) see code in conditions:
<% catalog.each |article| %> <% if article.image.nil? %> ...
or (e.g. seen there)
<% catalog.each |article| %> <% if article.image.exists? %> ...
however know nil interprets false in conditions. activerecord query returns nil if nothing found.
why not write:
<% unless article.image %>
(unless there article something)
instead of
<% if article.image.nil? %>
(if there nothing @ article.image something)
and
<% if article.image %>
instead of <% if article.image.exists? %>
i write code without nil?
, exists?
. missing? there pitfalls?
in example, , in many typical restful rails patterns, you're correct using implicit version identical in behavior.
but there suations nil?
, exists?
necessary and/or more readable...
for instance, nil?
option when you're reading boolean attribute, , need different behavior false
vs nil
(since both falsey in ruby).
or, assume in example, each article
has many images, , define method article
's first image according display order:
def primary_image images.order(display_order: "asc").limit(1) end
in case, if article
doesn't have images, primary_image
return empty collection, truthy. so, in case, you'd need use exists?
(or present?
). rails provides several convenience methods checking data records.
(or make sure primary_image
method returns nil
or false
when collection empty)
Comments
Post a Comment