gpt4 book ai didi

ruby-on-rails - 更改 Redmine Hook 中自定义字段的值

转载 作者:行者123 更新时间:2023-12-04 03:52:48 25 4
gpt4 key购买 nike

问题:

我的问题目前有 3 个自定义字段,比如说 FieldA(选择列表)、FieldB(不相关)和 FieldC(文本)。

需要发生的是,在保存时,FieldC 采用 <FieldA>-<date in Ymd>-<number from database> 的值。

例如,假设 FieldA 的值为“Test”,今天是 2015 年 1 月 8 日。FieldC 应该是 Test-20150108-001,其中 001 来自数据库中的自定义表,每个 FieldA 的值都是唯一的,并每年重置。

我到现在做了什么:

我已经使用命令行脚本通过

 ruby script/rails generate redmine_plugin subticket

和一个模型通过
ruby script/rails generate redmine_plugin_model subticket subticket_ids fa:string lastnum:integer year:integer

(其中 fa 是 FieldA 的值,lastnum 是用于该值的最后一个数字,year 是 lastnum 适用的当前年份)。

然后我开始添加 init.rb添加一个钩子(Hook)监听器以实现 presave 钩子(Hook):
 require_dependency 'subticket_hooks'

并创建了文件 lib/subticket_hooks.rb内容如下:
class SubticketHooksListener < Redmine::Hook::ViewListener
def controller_issues_edit_before_save(context={})
issue = context[:issue]

end
end

但是,我在这里找不到任何关于如何访问/写入自定义字段值的文档。仍在努力使模型也能正常工作,但我认为文档足够清楚,我可以进行实验(当然欢迎任何信息!)

请注意,这超出了我的能力范围,因为我的核心专业知识是完全不同的语言 - 慢慢来!

最佳答案

我有同样的任务

我的解决方案:
每个可自定义的 redmine 对象都有 custom_field_values字段,该值是 CustomFieldValue 的数组. CustomFieldValue包含当前值、自定义字段描述和自定义对象。

我通过排序读取和更改所需的值。可能它不是最好的变体,但不久前我熟悉了 ruby​​ 语言。

读取自定义字段值的方法:

def object_custom_field_value(object, field_name)
object.custom_field_values.each do |field|
if field.custom_field.name == field_name
return field.value
end
end
end

而对于改变:
def object_custom_field_set_value(object, field_name, value)
object.custom_field_values.each do |field|
if field.custom_field.name == field_name
field.value = value
end
end
end

希望这可以帮助!

关于ruby-on-rails - 更改 Redmine Hook 中自定义字段的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27837058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com