Class: RecordLoader::TagSetLoader

Inherits:
ApplicationRecordLoader show all
Defined in:
lib/record_loader/tag_set_loader.rb

Overview

Creates the specified TagSet if they are not present

Instance Method Summary collapse

Methods inherited from ApplicationRecordLoader

#wip_list

Instance Method Details

#create_or_update!(name, options) ⇒ TagSet?

Creates or updates a TagSet with the given name and options.

This method creates or updates a TagSet. It first checks for the existence of the associated TagGroup records for tag_group_id and tag2_group_id. If the TagGroup records are not present, it logs an error message and returns.

Parameters:

  • name (String)

    The name of the TagSet.

  • options (Hash)

    The options for creating or updating the TagSet.

Options Hash (options):

  • :tag_group_name (String)

    The name of the primary TagGroup.

  • :tag2_group_name (String)

    The name of the secondary TagGroup.

Returns:

  • (TagSet, nil)

    The created or updated TagSet, or nil if the TagGroup records are not found.



27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/record_loader/tag_set_loader.rb', line 27

def create_or_update!(name, options)
  tag_group_name = options.delete('tag_group_name')
  tag2_group_name = options.delete('tag2_group_name')

  tag_group = find_tag_group!(tag_group_name, name)
  tag2_group = find_tag_group!(tag2_group_name, name) if tag2_group_name

  options[:tag_group_id] = tag_group.id
  options[:tag2_group_id] = tag2_group.id if tag2_group

  TagSet.create_with(options).find_or_create_by!(name:)
end