Для чого Rails метод presence

1 хв. читання

У 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 робить чистішим ваш код. Майте це на увазі.

Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
Codeguida 5.6K
Приєднався: 8 місяців тому
Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Вхід / Реєстрація