加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 在Redmine钩子中更改自定义字段的值

发布时间:2020-12-17 02:07:35 所属栏目:百科 来源:网络整理
导读:问题: 我的问题目前有3个自定义字段,比方说FieldA(选择列表),FieldB(不相关)和FieldC(文本). 需要发生的是,在保存时,FieldC取值 FieldA – 日期在Ymd – 数字来自数据库 例如,我们假设FieldA的值为“Test”,今天是2015年1月8日.然后FieldC应为Test-20150108
问题:

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

需要发生的是,在保存时,FieldC取值< FieldA> – <日期在Ymd> – <数字来自数据库>

例如,我们假设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前面添加一个钩子监听器,以实现presave钩子:

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

希望这可以帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读