#ruby-on-rails #ruby #rubygems #administrate #rails-administrate
Вопрос:
Я пытаюсь показать атрибуты, которых в модели нет в качестве столбца.
Например, я хочу показать «total_salary» на панели управления индексом пользователя. Схема пользовательской модели выглядит следующим образом,
id int
name string
age int
Как и выше, в пользовательской модели нет столбца «total_salary».
Я изменил страницу панели мониторинга, которая была автоматически сгенерирована administrate gem.
До
ATTRIBUTE_TYPES = {
id: Field::Number
name: Field::String
age: Field::Number
}
COLLECTION_ATTRIBUTES = {
id: Field::Number
name: Field::String
age: Field::Number
}
После
ATTRIBUTE_TYPES = {
id: Field::Number
name: Field::String
age: Field::Number
total_salary: Field::Number # Changed
}
COLLECTION_ATTRIBUTES = {
id: Field::Number
name: Field::String
age: Field::Number
total_salary: Field::Number # Changed
}
Где добавить логику для расчета общей заработной платы каждого пользователя?
(Если файловая ведьма уже существует, пожалуйста, укажите мне путь к файлу. Если мне нужно создать новый файл или папку, пожалуйста, научите меня, где это сделать.)
Спасибо,
Ответ №1:
Похоже, вам нужно пользовательское поле, так total_salary
как оно не сопоставляется со столбцом. Для этого вам нужно добавить класс для его вычисления:
# app/fields/total_salary_field.rb
class TotalSalaryField < Administrate::Field::Base
def total_salary
# Perform calculation here
end
end
а потом сделайте:
ATTRIBUTE_TYPES = {
...,
total_salary: TotalSalaryField,
...
}
Вот ссылка на документацию для пользовательских типов полей: https://administrate-demo-prerelease.herokuapp.com/adding_custom_field_types