Приятные имена в связанных объектах в Active Admin

Я использую Ruby on Rails с Active Admin, и у меня есть одна модель, в которой есть отношение к пользовательской модели. Все работает, просто вместо электронной почты пользователя или чего-то еще он показывает объект пользователя в поле выбора при создании нового объекта. Например:

<select id="playground_open_time_user_id" name="playground_open_time[user_id]">
  <option value=""></option>
  <option value="15">#<User:0x7fb553945628></option>
  <option value="44">#<User:0x7fb553943508></option>
  <option value="51">#<User:0x7fb553942ef0></option>
</select>

Как и где я могу изменить, чтобы вместо этого отображался адрес электронной почты или имя + фамилия?


person Rok Jaklič    schedule 09.02.2012    source источник


Ответы (3)


Попробуйте добавить метод «имя» в свою модель, например:

class User
  def name
    "#{first_name} #{last_name}"
  end
end
person christianblais    schedule 09.02.2012

Вы можете либо добавить метод к своей модели, что-то вроде pretty_string, либо добавить помощника представления, похожего на pretty_user_string(user). Затем вам нужно будет обновить свое представление, чтобы вызвать хороший метод/функцию.

person ksol    schedule 09.02.2012

Проще всего определить метод to_s для объекта вашей модели следующим образом:

def to_s
self.first_name
end

Всякий раз, когда ActiveAdmin встречает ваш объект и ему необходимо его отобразить, он будет использовать значение, возвращаемое методом. Он очень похож на метод toString(), который используют многие Java-фреймворки.

person niiamon    schedule 25.07.2013