0

В моем проекте у меня есть модель под названием PaymentCondition, а другая - PaymentPortion. PaymentConditionhas_manypayment_portions и PaymentPortionbelongs_topayment_condition.Использовать новые значения атрибутов для проверки before_update

Когда я создаю новый PaymentCondition, у меня есть метод, который создает пpayment_portions. Будучи n значение атрибута :amount от PaymentCondition.

Если я создаю новый PaymentCondition с amount: 2, например, у меня было бы 2 payment_portions.

До сих пор так хорошо.

Моя проблема:

Я использую вложенную форму с этой точки зрения, так что я могу изменить все сразу.

PaymentCondition имеет атрибут catchments.

PaymentPortion имеет атрибут catchment.

Перед этой формой завершения заполнения, я хотел бы проверить, если суммы из PaymentPortion.catchment равно PaymentCondition.catchments. Если нет, я должен сделать ошибку.

На данный момент, я не могу получить новые значения PaymentCondition перед сохранением ...

Я делаю это внутри payment_conditions_controller:

before_update :check_catchments 

def check_catchments 
    errors.add(:catchments, "Values must check") unless catchments_check? || new_record? 
end 

def catchments_check? 
    catchment == portion_catchments 
end 

def portion_catchments 
    payment_portions.sum(:catchments) 
end 

Используя сумму(), Я получаю только значения, которые находятся в базе данных. Мне нужны значения, которые отправляются ...

Есть ли способ сделать это?

Заранее спасибо.

ответ

0

Может ли работать непосредственно в контроллере вариант? Вы можете использовать такие методы, как 'build' или 'first_or_initialize', чтобы получить/создать объекты AR. А затем просто проверьте их в контроллере и при необходимости сохраните данные.

+0

Это первое, о чем я думал, на самом деле. Второй будет делать эту проверку с помощью javascript в представлении ... Поскольку все мои другие проверки выполняются внутри моделей, я думал, что это будет какой-то способ сделать это. – ThalesMiguel

 Смежные вопросы

  • Нет связанных вопросов^_^