Я использую плагин Redmine и Computed Custom Field .
Плагин позволяет вычислять настраиваемые поля и принимает для расчетов код ruby.
В Redmine у меня есть проект (Project_id = 11), в котором я рассчитываю стоимость продуктов в отдельном настраиваемом поле для каждой проблемы. Выглядит это так:
- В каждом выпуске есть настраиваемое поле (cf_id = 31) для выбора продукта: груши, ананасы, помидоры, кокосы.
- В каждом выпуске есть настраиваемое поле (cf_id = 32) для ввода количества (штук) товаров.
- У каждого выпуска есть настраиваемое поле (cf_id = 33) для ввода веса (фунтов) товара.
- Каждый выпуск имеет вычисленное пользовательское поле (cf_id = 34), в котором формула вычисляет стоимость продукта.
Формула в вычисляемом пользовательском поле (cf_id = 34) включает два хэши с ценами продуктов (в зависимости от типа продукта):
products_by_weight = {
"Pears" => [110],
"Tomatoes" => [120]
}
products_by_pieces = {
"Pineapples" => [130,300],
"Coconuts" => [140,200]
}
Затем моя формула проверяет продукт, выбранный в cf_id = 31 на принадлежность к первому или второму хэшу, и выполняет соответствующие вычисления:
- Умножает цену на вес (cf_id = 32) в случае использования товаров из первого списка
- Или умножает цену на количество (cf_id = 33) в случае использования груз из второго списка. Второе значение в массиве значений «products_by_pieces» ha sh является пределом веса на единицу. Если вес, разделенный на предел, является большей величиной, чем указано в cf_id = 32, тогда в формуле в сценарии 2 будет использоваться это количество вместо значения, указанного в cf_id = 32.
Теперь я пытаюсь переместить эти переменные за пределы формулы. Я создал проект (Project_id = 22), в котором я хочу сохранить эти переменные как проблемы.
Я представляю это так:
- Название проблемы - название продукта
- Каждая проблема имеет два настраиваемых поля:
- cf_id = 41 - цена продукта
- cf_id = 42 - предел веса на единицу.
- Для каждого выпуска присваивается категория: "products_by_weight" или "products_by_pieces".
Я хочу скомпилировать те же хеши, которые теперь включены в мою формулу в cf_id = 34 вопросов проекта 11, но автоматически из проблем проекта 22 с учетом категории.
Пока все, что у меня есть достигнуто, чтобы найти цену известный продукт из таких выпусков проекта 22.
price = Project.find(22).issues.where(subject: "Pineapples").first.try(:custom_field_value,41)
Но это никак не помогает и требует внесения изменений в код при добавлении каждого нового продукта.
Я новичок к программированию и Ruby, поэтому я пытаюсь поэкспериментировать с классами Redmine , и попытался скомпилировать ха sh с таким кодом:
Issue.by_category(Project.find(22))
Но в результате До сих пор я получил только это:
[{"status_id"=>"27", "closed"=>true, "category_id"=>"1", "total"=>"10"}]
, что полностью отличается от ожидаемого результата. Любая помощь будет полезна!
UPD. Прямо сейчас мои переменные (цены на продукты и ограничения по весу) находятся в га sh, что непосредственно является частью кода для вычислений. поле 34. Но я не хочу, чтобы эти переменные (цены и ограничения по весу) были частью кода. Я хочу управлять ими как проблемами с соответствующими пользовательскими полями (41 и 42) в отдельном проекте (22) - таким образом, чтобы обычный пользователь мог изменять или добавлять эти значения в проблемах, не изменяя код вычисляемого пользовательского поля (34). Поэтому я хочу скомпилировать это sh на основе проблем проекта 22 вместо того, чтобы писать его напрямую. Я предполагаю, что это так, что Предметы Проблем Проекта 22 должны стать ключами и массивом пользовательских полей [41,41] - значений. При этом мне нужны два отдельных хэша, определенных назначенной категорией ("goods_by_weight" и "goods_by_pieces"), потому что они рассчитываются по-разному, и в Project 22 у меня есть другие переменные, записанные в качестве значений пользовательских полей в выпусках с другой категорией.