通过Redmine中的Rake任务保存问题自定义字段值

问题描述 投票:0回答:1

嗨,我有一个rake任务,该任务通过控制台工作执行,但是在调用rake任务时不起作用。实际上,它确认发生了保存,而值未更新。似乎缺少一些活动记录提交,因为我看到的日志中唯一的区别是,如果运行(通过控制台),则开始提交转储,而作为rake任务运行时,Redmine的debug.log中没有这样的部分...

这里是内容:

namespace :redmine do
  namespace :myplugin do
    desc 'Updates custom field for idle tickets.'
    task :update_idle => :environment do
      Issue.open.each do |issue|
        begin
          days = DateTime.now.to_time - DateTime.parse(issue.updated_on.to_s).to_time
          days = days/86400
          if days > 0
            cfv = issue.custom_field_values.detect {|cfv| cfv.custom_field_id == 19 }
            cfv.value = days.ceil
            if issue.save
              puts "#{issue.id} saved"
            else
              puts "#{issue.id} not saved"
            end
          end
        end
      end
    end
  end
end
ruby-on-rails ruby rake redmine redmine-plugins
1个回答
0
投票

上述代码的问题在于,它既可以在Redmine 3.4中既可以在控制台中使用,也可以作为Rake任务使用,但是在Redmine 4中,它只能在控制台中使用。

最终,我可以通过以下方式通过Rake任务在Redmine 4的问题的自定义字段上执行更改:

namespace :redmine do
  namespace :myplugin do
    desc 'Updates custom field for idle tickets.'
    task :update_idle => :environment do
      Issue.open.each do |issue|
        begin
          days = DateTime.now.to_time - DateTime.parse(issue.updated_on.to_s).to_time
          days = days/86400
          if days > 0
            issue.custom_values.each do |x|
              if x.custom_field_id == 19
                x.value = days.ceil
                x.save
              end
             end
            issue.save
            true
          end
        end
      end
    end
  end
end
© www.soinside.com 2019 - 2024. All rights reserved.