У Rails є зручний метод: presence
. Все, що він робить, це повертає себе, якщо present?
. Це доволі простий метод:
def presence
self if present?
end
Документація містить чудовий приклад й спрощує цей код:
state = params[:state] if params[:state].present?
country = params[:country] if params[:country].present?
region = state || country || 'US'
до цього:
region = params[:state].presence || params[:country].presence || 'US'
Ось інший варіант використання. Уявіть, що у вашому застосунку є сторінка, де ви можете шукати користувачів. Є шаблон show.html.erb
та два частинні шаблони (partial) user.html.erb
й no_results.html.erb
.
Ваш контролер шукатиме користувачів й призначатиме їх змінній екземпляра. Якщо жодного користувача не буде знайдено, ми надамо перевагу показу партіала no_results
замість порожньої сторінки:
<% if @users.present? %>
<%= render @users %>
<% else %>
<% render 'no_results' %>
<% end %>
За допомогою presence
ми можемо зробити цей код коротшим, але все ще читабельним.
<%= render @users.presence || 'no_results' %>
В більшості випадків present?
є саме тим, що ви шукаєте, але іноді presence
робить чистішим ваш код. Майте це на увазі.
Ще немає коментарів