def self.merge_tags target_tag, source_tags
target_tag => Tag
Tag.transaction do
Array(source_tags).compact.uniq.each do |st|
st => Tag
next if st == target_tag
st.post_tags.find_each do |pt|
begin
pt.update!(tag: target_tag)
rescue ActiveRecord::RecordNotUnique
pt.discard_by!(nil)
end
end
tag_name = st.tag_name
st.destroy!
tag_name.update!(canonical: target_tag.tag_name)
end
end
target_tag
end
```ruby
def self.merge_tags target_tag, source_tags
target_tag => Tag
Tag.transaction do
Array(source_tags).compact.uniq.each do |st|
st => Tag
next if st == target_tag
st.post_tags.find_each do |pt|
begin
pt.update!(tag: target_tag)
rescue ActiveRecord::RecordNotUnique
pt.discard_by!(nil)
end
end
tag_name = st.tag_name
st.destroy!
tag_name.update!(canonical: target_tag.tag_name)
end
end
target_tag
end