当前位置: 首页 > 知识库问答 >
问题:

Ruby/Redmine:从问题主题和适当的自定义字段编译哈希

顾均
2023-03-14

我正在使用Redmine和Computed自定义字段插件。

该插件提供了计算自定义字段的可能性,并接受ruby代码进行计算。

在红矿中,我有一个项目(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中选择的产品是否属于第一个或第二个散列,并执行相应的计算:

  1. 使用第一个清单中的商品时,将价格乘以重量 (cf_id = 32)
  2. 或者,如果使用第二个列表中的商品,则将价格乘以数量 (cf_id = 33)。“products_by_pieces”哈希值数组中的第二个值是每件的重量限制。如果权重除以限制的金额大于在 cf_id = 32 中输入的金额,则方案 2 中的公式将使用此数量,而不是 cf_id = 32 中指示的数量。

现在我试图将这些变量移出公式。我做了一个项目(project_id=22),希望将这些变量保存为问题。

我想象是这样的:

    < li >问题的名称是产品的名称 < li >每期有两个自定义字段: < ul > < li>cf_id = 41是产品的价格 < li>cf_id = 42是每件的重量限制

我想在项目11的问题的cf_id = 34中编译现在包含在我的公式中的相同散列,但是考虑到类别,自动从项目22的问题中编译。

到目前为止,我所做的就是从project 22的这类问题中找到一个已知产品的价格。

price = Project.find(22).issues.where(subject: "Pineapples").first.try(:custom_field_value,41)

但这在任何方面都没有帮助,并且需要在添加每个新产品时更改代码。

我是编程和 Ruby 的新手,所以我正在尝试使用 Redmine 类,并尝试使用以下代码编译哈希:

Issue.by_category(Project.find(22))

但结果,到目前为止,我只收到了这个:

[{"status_id"=>"27", "closed"=>true, "category_id"=>"1", "total"=>"10"}]

这与我预期的结果完全不同。任何帮助都会有所帮助!

UPD。现在,我的变量(产品价格和重量限制)在一个散列中,它直接是计算字段34的代码的一部分。但是我不希望这些变量(价格和重量限制)成为代码的一部分。我想在一个单独的项目(22)中作为相应的自定义字段(41和42)的问题来管理它们——以这种方式,普通用户可以在问题中更改或添加这些值,而不必更改计算自定义字段(34)的代码。所以我想根据项目22的问题来编译这个散列,而不是直接写出来。我假设是这样的,即项目22的问题的主题应该变成自定义字段[41,41]的键和数组-值。在这样做的时候,我需要由分配的类别(“货物重量”和“货物件数”)确定的两个单独的散列,因为它们是以不同的方式计算的,并且在项目22中,我将其他变量作为自定义字段的值写入不同类别的问题中。

共有1个答案

燕正德
2023-03-14

我用以下方法解决了这个问题。

按照计划,现在我将产品的价目表作为问题存储在一个单独的项目(ID 22)中。要在计算的自定义字段的公式中获取所选类别(A)的所有产品的价格哈希,如果项目问题(ID 11),我执行以下操作:

PRICELIST_PROJECT_ID = 22
CATEGORY_A_ID = 1
PRICE_VALUE_CFID = 41
WLIMIT_VALUE_CFID = 42
delimiter = ','

pricelist_issues_cat_a = Project.find(PRICELIST_PROJECT_ID).issues.select { |rate| rate.category_id == CATEGORY_A_ID }
cata_products_names = []
cata_products_pvalues = []
for i in (0..pricelist_issues_cat_a.size-1) do
  cata_products_names[i] = pricelist_issues_cat_a[i].try(:subject)
  cata_products_pvalues[i] = pricelist_issues_cat_a[i].try(:custom_field_value,PRICE_VALUE_CFID).split(Regexp.union(delimiter)).map(&:to_f)
end

cata_price_hash = Hash[cata_products_names.zip(cata_products_pvalues)]

产品类别B也是如此。

不确定这是否是最有效的方法,但它对我有用。

 类似资料:
  • 打开主题配置 选一个自己喜欢的主题吧

  • 自定义主题 Element 默认提供一套主题,CSS 命名采用 BEM 的风格,方便使用者覆盖样式。我们提供了四种方法,可以进行不同程度的样式自定义。 主题编辑器 使用在线主题编辑器,可以修改定制 Element 所有全局和组件的 Design Tokens,并可以方便地实时预览样式改变后的视觉。同时它还可以基于新的定制样式生成完整的样式文件包,供直接下载使用(关于如何使用下载的主题包,请参考本节

  • uView目前可以自定主题色,字体颜色,边框颜色等,所有组件内部的样式,都基于同一套主题,比如您修改了primary主题色,所有用到了primary颜色 的组件都会受影响。 教程 可以在打开的颜色拾取器中输入或者选择颜色,再点"确定"按钮即可。 颜色配置完后,在页面底部下载文件,会得到一个名为uview.theme.scss的文件。 将文件复制到项目的公共目录(视情况而定)中,再在项目根目录的un

  • Element Plus 默认提供一套主题,CSS 命名采用 BEM 的风格,方便使用者覆盖样式。我们提供了四种方法,可以进行不同程度的样式自定义。 仅替换主题色 如果仅希望更换 Element Plus 的主题色,推荐使用在线主题生成工具。Element Plus 默认的主题色是鲜艳、友好的蓝色。通过替换主题色,能够让 Element Plus 的视觉更加符合具体项目的定位。 使用上述工具,可以

  • 我有两个二维数组: 在第一个 2D 阵列中,我有 2 个子阵列(实际上有 16 个) - 每个产品一个。它们中的每一个都为同一产品列出了不同的名称(每个产品可以有 1 到 22 个备用名称)。 在第二个 2D 阵列中,我有 2 个子阵列(实际上也有 16 个) - 每个产品每个价目表一个。它们中的每一个都列出了来自前一个 2D 数组中相应子数组的同一产品(实际上为 10 个价格选项)的不同价格(实

  • 问题内容: 有没有简单的方法可以自定义现有主题?对于默认主题,有很多主题属性,但是在sphinxdoc中,我什至无法设置徽标或更改某些颜色。 还是可以向我推荐一个可以学习如何修改主题的网站? 问题答案: 我只想在我的狮身人面像文档中添加ReST删除线。这是我的做法: 在: (这使其看起来像默认主题(图2)) 在: 然后,在您的conf.py中: 此处更多信息:https : //sphinx.re