Создание атрибута модели ActiveRecord для использования в представлении

#ruby-on-rails #ruby-on-rails-3 #activerecord

#ruby-on-rails #ruby-on-rails-3 #activerecord

Вопрос:

Я не могу поверить, что мне даже приходится задавать этот вопрос, но это был «один из тех дней», и я вообще не могу ясно мыслить.

Я создаю простое приложение Rails, используя данные в базе данных MySQL. В одной из таблиц есть столбец для метки времени создания (creation_ts). Что я хотел бы сделать, так это создать атрибут модели, который станет частью каждого объекта модели. В этом случае, если запись имеет метку времени создания старше месяца, я хочу, чтобы для атрибута «late» было установлено значение true (false, если это не так). Тогда я мог бы позже использовать это в представлении при динамической настройке атрибутов HTML-элемента.

Опять же, я должен это знать (на самом деле, я делал это раньше). Я просто рисую полный пробел.

Ответ №1:

В Rails 3 используется ‘created_at’ для хранения даты первого сохранения. В вашей модели, скажем, Model.rb, вы могли бы добавить средство позднего доступа, определенное следующим образом:

 def late?
    created_at > 1.month.ago
end
  

Который вернет true или false.

Тогда в ваших представлениях вы могли бы сделать что-то вроде

 <% if @model.late? %>
  <%= @model.something_to_show %>
<% end %>
  

ян.

Комментарии:

1. поскольку он возвращает логическое значение, имя метода late? было бы подходящим.