refactor update protocol keywords action [fixes SCI-2257]

This commit is contained in:
zmagod 2018-04-06 15:41:50 +02:00
parent d6156e2f4a
commit 024032faff
2 changed files with 26 additions and 7 deletions

View file

@ -499,13 +499,7 @@ class Protocol < ApplicationRecord
self.protocol_protocol_keywords.destroy_all
if keywords.present?
keywords.each do |kw_name|
kw = ProtocolKeyword.find_by(name: kw_name)
if kw.blank?
kw = ProtocolKeyword.create(
name: kw_name,
team: self.team
)
end
kw = ProtocolKeyword.find_or_create_by(name: kw_name, team: team)
self.protocol_keywords << kw
end
end

View file

@ -0,0 +1,25 @@
namespace :protocol_keyword_team do
desc 'Fixes false team_id on protocol keyword entry [bug SCI-2257]'
task exec: :environment do
puts '[sciNote] Start processing...'
Protocol.find_each do |protocol|
new_keywords = []
protocol.protocol_keywords.find_each do |protocol_keyword|
next if protocol.team_id == protocol_keyword.team_id
# remove protocol keyword from protocol
ProtocolProtocolKeyword.where(
protocol_id: protocol.id,
protocol_keyword_id: protocol_keyword.id
).destroy_all
# create new keyword with correct team
new_keywords << ProtocolKeyword.create(
name: protocol_keyword.name,
team_id: protocol.team_id
)
end
# append newly created keywords to protocol
protocol.protocol_keywords << new_keywords
end
puts '[sciNote] Done!'
end
end