проверка имени, но не тогда, когда оно существует в полях collection_check_

#ruby-on-rails

Вопрос:

Мой проект позволяет пользователям создавать супергероя и связывать его с командой, используя вложенные атрибуты. Проблема в том , что если команда была ранее создана и зарегистрирована collection_check_boxes , «Создать новую команду» text_field все равно потребует от пользователей ввода и ввода новой команды. Другими словами, я продолжаю получать сообщение об ошибке, которое text_field нельзя оставлять пустым независимо от того, проверяет ли пользователь один или несколько полей в поле collection_check_boxes .

Я хочу validates_presence_of :name запустить, если команда :name уже существует в collection_check_boxes . Если его нет в флажках, выполните проверку в :name text_field

Я перепробовал много шагов и до сих пор не могу понять этого. Мое лучшее предположение состоит в том, что мне нужно создать собственный метод, чтобы это сработало. Вот скриншот моего проекта: https://i.stack.imgur.com/R3puR.png

супергерой.рб

 class Superhero < ApplicationRecord
    belongs_to :user
    has_many :superhero_teams
    has_many :teams, through: :superhero_teams

    validates_presence_of :name

    accepts_nested_attributes_for :teams, reject_if: proc { |attributes| attributes['name'].blank?}

    def teams_attributes=(team_attributes)
        team_attributes.values.each do |team_attribute|
          team = Team.find_or_create_by(team_attribute)
          self.teams << team
        end
    end
end
 

команда.рб

 class Team < ApplicationRecord
    has_many :superhero_teams
    has_many :superheroes, through: :superhero_teams

    validates_presence_of :name
end
 

новый.html.erb

 <h1>CREATE A SUPERHERO</h1>

<%= form_for(@superhero) do |f| %>

    <%= render partial: "layouts/error", locals: {object: @superhero} %>

    <div class="field">
      Superhero Name
      <%= f.text_field :name %>
      <br>
      <br>
    </div>
  
    <div class="field">
    <% if Team.exists? %>
        Select Team:
        <%= f.collection_check_boxes :team_ids, Team.all, :id, :name %>
        <br><br>
    <% end %>
    </div>
  
    <div class="field">
     Create a new Team:
      <%= f.fields_for :teams, @superhero.teams.build do |teams_fields| %>
        <%= teams_fields.text_field :name %>
      <% end %>
    </div>
    
    <div class="actions">
    <br>
      <%= f.submit %>
    </div>
  
<% end %>