Событие не запускается через AppDomain

У меня много проблем с AppDomains. В настоящее время у меня есть AppDomain, содержащий элементы управления камерой, и я пытаюсь вернуть события из этого вторичного AppDomain (например, снимок) в основную программу. Кажется, все настроено правильно (события зарегистрированы, функции будут выполняться через границы домена), но когда я пытаюсь вызвать, ничего не происходит. но как сделать так, чтобы он не создавал новые записи, если запись уже существует? В качестве примера: скажем, у меня есть три модели, Team, ...

Я с большим успехом использую метод accepts_nested_attributes_for Rails, но как его использовать , а не создавать новые записи, если запись уже существует?

В качестве примера:

Скажем, у меня есть три модели: «Команда», «Членство» и «Игрок», и у каждой команды есть множество игроков, и игроки могут принадлежать ко многим командам. Затем модель команды может принимать вложенные атрибуты для игроков, но это означает, что каждый игрок, отправленный через комбинированную форму команда + игрок (ы), будет создан как новая запись игрока.

Как мне поступить, если я хочу создать новую запись игрока таким образом, если нет т уже игрок с тем же именем? Если есть игрок с тем же именем, новые записи игрока не должны создаваться, но вместо этого должен быть найден правильный игрок и связан с новой записью команды.

54
задан trisignia 26 August 2010 в 11:06
поделиться

1 ответ

Когда вы определяете хук для автосохранения ассоциаций, обычный путь кода пропускается и вместо него вызывается ваш метод. Таким образом, вы можете сделать следующее:

class Post < ActiveRecord::Base
  belongs_to :author, :autosave => true
  accepts_nested_attributes_for :author

  # If you need to validate the associated record, you can add a method like this:
  #     validate_associated_record_for_author
  def autosave_associated_records_for_author
    # Find or create the author by name
    if new_author = Author.find_by_name(author.name)
      self.author = new_author
    else
      self.author.save!
    end
  end
end

Этот код не тестировался, но он должен быть именно тем, что вам нужно.

55
ответ дан 7 November 2019 в 07:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: