2014-10-15 1 views
0

В rails_admin ассоциации между моделями представлены двумя полями выбора. Вы можете перемещать объекты из одного поля в другое и сохранять ссылку между объектами. Эти поля заполняются «именем» объекта, а если «имя» пусто, оно заполняется идентификатором объекта. Как я могу изменить эту логику, чтобы заполнить выбор каким-либо другим полем объекта.rails admin настройка выбирает

например. У меня 2 модели. Пользователь и сообщение (многие-ко-многим). У пользователя всегда есть пустое поле «email», а поле «name» иногда пусто. Итак, я проверяю объекты Post и хочу видеть связанных пользователей. имя какого-либо пользователя пуст, поэтому я вижу «id». Можно ли заменить «имя» на «email» в этой презентации?

+0

Вы запрашиваете переименование столбца или фактическое изменение данных, хранящихся в столбце? – FeifanZ

+0

данные хранятся в колонке. другой пример - если у объекта нет поля «имя» и есть поле «имя_пользователя», которое мы можем определить в имени метода модели, и оно использует «имя_пользователя» для представления в ссылках. но у меня уже есть имя поля, и этот трюк не работает – kpblc

+1

Фактически вы можете создать модельный метод 'name', даже если у вас уже есть поле' name'. Этот метод просто переопределит это поле, но вы все равно можете получить доступ к полю с помощью 'read_attribute' – FeifanZ

ответ

2

Обновленный ответ, основанный на комментарии

Нечто подобное в Post модели:

def display_name 
    user.name.blank? ? user.email : user.name 
end 

Это создает метод, который проверяет, является ли имя пользователя пустым. Если это так, покажите адрес электронной почты пользователя. В противном случае укажите имя пользователя. Когда вы показываете свои сообщения, вы можете позвонить post.display_name.


После того, как вы создали email колонку на Post, вы можете цикл по post с и получить электронную почту пользователя:

Post.all.each do |p| 
    u = p.user 
    email = u.email 
    p.email = email 
    p.save 
end 


Вы можете создать email столбец либо путем добавления другого колонка:

rails g migration add_email_to_posts email:string 

Или путем переименования существующего столбца (ins ide файл миграции):

rename_column :posts, :name, :email 
+0

извините, но где нет необходимости в изменении структуры db. Мне просто нужно изменить представление для администратора rails. – kpblc

+0

Не совсем уверен, что понимаю, что вы имеете в виду. В каких столбцах есть 'Post', и можете ли вы привести пример одной« Почты »до и после изменения? – FeifanZ

+0

Я сделаю снимок экрана https://dl.dropboxusercontent.com/u/93677521/example.png – kpblc