嗨,我有一个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
上述代码的问题在于,它既可以在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