Пропустить проверку после создания рельсов 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 ответа
Прежде всего, если вы хотите сохранить после всех проверок, сделайте что-то вроде этого
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