Присвоение строк диапазонам чисел - PullRequest
0 голосов
/ 01 декабря 2011

Это действительно простая проблема.У меня есть следующий код:

  def age_color

    age = Time.now() - created_at

    age_color = 'green' if age < 2.days
    age_color = 'yellow' if age >= 2.days && age <= 5.days
    age_color = 'red' if age > 5.days

  end

, который все равно не работает должным образом.Я думаю, что это уродливо и напоминает мне о моих днях PHP.Как я могу написать это более элегантно?Никогда не должно быть ноль.

Ответы [ 2 ]

1 голос
/ 01 декабря 2011

Ваша конструкция не работает, потому что вы поставили ее в неправильном порядке.Попробуйте это

def age_color
  if    created_at < 5.days.ago then 'red'
  elsif created_at > 2.days.ago then 'green'
  else                               'yellow'  
end
1 голос
/ 01 декабря 2011

Вы можете использовать чехол :

age_in_days = (Time.now() - created_at).days

age_color = case age_in_days
  when 0..1: 'green'
  when 2..5: 'yellow'
  else       'red'
end

Метод дней: http://as.rubyonrails.org/classes/ActiveSupport/CoreExtensions/Numeric/Time.html#M000322

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...