Как проверить и установить значение настраиваемого поля в Redmine? - PullRequest
0 голосов
/ 16 июня 2019

Проблема: Я работаю над импортом файла CSV для пользователей. И я хочу создать для них пользовательское поле «Порядок отображения» и заполнить его, если такое пользовательское поле существует для пользователей модели.

То, что я сделал сейчас:

order_field = CustomField.where(name: ["rank", "оrder"]).first
#loop
            u = User.new
            u.login = login
            u.firstname = firstname
            u.lastname = lastname
            u.admin = true if login == 'admin'
            u.status = true
            u.auth_source_id = 1 if !AuthSource.search(login).empty?
            u.type = 'User'
            u.mail = email
            u.mail_notification = Setting.default_language
            u.mail_notification = Setting.default_notification_option
            u.save!

            custom_value_exists = _________
       # x = u.custom_value_for(order_field) if order_field if custom_value_exists
       # >> <CustomValue id: 5926, customized_type: "Principal", customized_id: 4766, custom_field_id: 28, value: "11">
       # y = ________create____ if !custom_value_exists
#loop

Но моих знаний в Redmine недостаточно, чтобы ответить, как установить значение.

1 Ответ

0 голосов
/ 17 июня 2019

Получить: object.custom_field_value(field.id)

Обновление:

object.custom_field_values = {field.id => val} # Set new value
object.save_custom_field_values # Save

Однако это не работает для создания значения, поэтому проверяет, существует ли запись через object.custom_value_for(field.id).id? или ...

Create / Update: Легко. Просто добавьте строку object.custom_vield_values перед обновлением кода. Возвращает список значений и запускает создание пустого значения. Пример

u = User.find(1)
cf = CustomField.where('name', 'mobile phone').first
u.custom_field_values # returns values, triggers creation
u.custom_field_values = {cf.id = "+123456789"} # set value
u.save_custom_field_values # save

Документы: Рубидок

...