пропустить проверку после создания рельсов mongoid - PullRequest
6 голосов
/ 26 января 2011

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

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

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

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

@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. </p>

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

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

Спасибо

Ответы [ 2 ]

12 голосов
/ 03 марта 2011

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

1 голос
/ 26 января 2011

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

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

Далее, если вы используете mongoid, тогда оператор << вызывает .save для обоих документов,

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

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

if @placement.valid?
  @placement.person = @person
  @company.placements << @placement
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...