пропустить проверку после создания монгоидных рельсов

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

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

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

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

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

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

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

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

@person.placements << @placement

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

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

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

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

Спасибо


person Gagan    schedule 26.01.2011    source источник
comment
Вы должны принять ответ, если он сработал для вас. Дайте парню его очки. :)   -  person sujal    schedule 29.07.2011


Ответы (2)


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

person Alex    schedule 03.03.2011
comment
Но как сохранить :validate =› false при использовании оператора ‹‹, поскольку он одновременно сохраняет и @company, и @placements? Есть идеи - person Gagan; 07.03.2011
comment
просто сначала сохраните место размещения (с валидацией false), а затем добавьте его в свою компанию. - person MatthewFord; 30.03.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
person kriysna    schedule 26.01.2011