Рельсы 3: пропустить проверку для связанной модели

#ruby-on-rails #ruby-on-rails-3 #validation #activerecord

#ruby-on-rails #ruby-on-rails-3 #проверка #activerecord

Вопрос:

Похоже, что в rails 3 (версия 3.0.7) validates_associated включен по умолчанию (и в результате он устарел).

Мой модельный платеж имеет соответствующее напоминание о модели:

 class Payment < ActiveRecord::Base

  belongs_to :reminder

end
  

всякий раз, когда я создаю новый платеж, он также проверяет связанное напоминание. Я хочу пропустить это. Добавление:validate => false к отношению не сработало. Есть предложения? А также, если бы кто-нибудь мог рассказать об изменениях в rails 3 с помощью validates_associated, поскольку я не смог его найти.

Ответ №1:

Я не вижу причин, по которым проверка ассоциации будет выполняться, если она явно не определена. Есть ли в вашем напоминании что-нибудь, что могло бы выполнять проверку?

http://apidock.com/rails/v3.0.7/ActiveRecord/Associations/ClassMethods/belongs_to

http://apidock.com/rails/v3.0.7/ActiveRecord/Validations/ClassMethods/validates_associated

Комментарии:

1. Модель напоминания имеет пользовательскую проверку, которая проверяет, что due_date не в прошлом, и при создании нового платежа происходит сбой. Я хочу изменить это поведение.

Ответ №2:

Это не проблема с проверкой, но я обновлял свою модель напоминания после создания записи платежа. Это привело к запуску проверок для модели напоминания.

Добавлено условие для этого особого случая (когда я хотел пропустить проверку), чтобы не обновлять модель напоминания.

Хотя ответ специфичен для моего сценария, но добавление, поскольку это может кому-то помочь.