mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-12-27 02:04:33 +08:00
refactor update protocol keywords action [fixes SCI-2257]
This commit is contained in:
parent
d6156e2f4a
commit
024032faff
2 changed files with 26 additions and 7 deletions
|
@ -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
|
||||
|
|
25
lib/tasks/protocol_keyword_team.rake
Normal file
25
lib/tasks/protocol_keyword_team.rake
Normal 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
|
Loading…
Reference in a new issue