#ruby #activeadmin
#ruby #activeadmin
Вопрос:
Я использую def to_s, чтобы изменить числовое значение пользователя в строке.
У пользователя есть имя и фамилия, хотя — f_name и s_name.
В моей модели:
def to_s
f_name
end
Работает нормально. Но как я могу получить фамилию рядом?? Спасибо
Комментарии:
1. Всегда ли у пользователя есть и имя, и фамилия?
Ответ №1:
Если возможно, что у вас есть только имя или фамилия, тогда рассмотрите:
def full_name
[first_name, last_name].compact.join(' ')
end
def to_s
full_name
end
Какой бы метод вы ни использовали, я бы рекомендовал вам создать метод для выражения полного имени, а затем ссылаться на него в методе to_s.
Ответ №2:
Вы можете использовать интерполяцию:
def to_s
"#{f_name} {l_name}" # or f_name ' ' l_name
end
Комментарии:
1. Я предпочитаю версию, которая использует интерполяцию строк, потому что версия, которая объединяет строку с
завершается ошибкой, когда
f_name
являетсяnil
.2. @spickermann для меня интерполяция строк всегда выглядела лучше, поэтому 1
Ответ №3:
Самый простой вариант — просто вернуть строку, объединяющую обе части имени:
def to_s
"#{f_name} #{s_name}"
end
В Ruby последнее значение в методе является подразумеваемым возвращаемым значением. Существуют более явные способы сделать это, а также другие способы объединения строк. Вы также могли бы сделать это:
def to_s
return f_name ' ' s_name
end
Комментарии:
1. Спасибо обоим! Оба подхода работают. Большое спасибо 🙂 Не могу поставить галочку в течение нескольких минут!