Пропустить проверку после создания рельсов mongoid

Я хочу пропустить проверку после создания объекта. Давайте возьмем пример

у человека много компании, а у компании много людей

человек имеет много мест размещения и размещение принадлежит человеку человек может иметь только одно активное размещение

Модель размещения имеет одну проверку, которая проверяет, есть ли у человека уже активное размещение при сохранении.

@placement is active placement
@employment.placement = @person

if @placement.save
  #################
  @person.placements << @placement
  @company.placements << @placement
end

Теперь, когда место размещения сохранено в первый раз, нет проблем, оно будет сохранено.

Теперь проблема возникает, когда

@person.placements << @placement

Поскольку у человека уже есть активное размещение через @place.save.

@ person.placements << @placement снова сохраняет @placement, и проверка выдает ошибку проверки в объект @placement.

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

Или любые альтернативные решения приветствуются.

Спасибо

2 ответа

Решение

Вы можете использовать: save:validate => false

Прежде всего, если вы хотите сохранить после всех проверок, сделайте что-то вроде этого

if @placement.valid?
  @person.placements << @placement
  @company.placements << @placement
end

Следующая вещь, если вы используете Mongoid, то << вызов оператора .save на обоих документах.

Решение может быть либо перезаписать << mongoid, или нужно конкретизировать валидацию, в течение которой происходит действие.

validates :placeholder, :on => :create И Или

if @placement.valid?
  @placement.person = @person
  @company.placements << @placement
end
Другие вопросы по тегам