У меня есть вложенная форма, называемая транзакцией, которая включает дочерний объект, называемый формой банковской информации. Валидации банковской информации не следует инициировать, когда поле транзакции (транзакции) родительской (транзакции) установлено на «проверка». По какой-то причине, когда я задал транзакционный_механизм для «проверки» в форме, он все еще вызывает валидации формы банковской информации. В модели bank_information_form у меня есть метод cheque_transaction? что должно препятствовать запуску проверки, если транзакция_механизм «проверяется», но я получаю сообщение об ошибке.Отсутствие блока (выход) ошибка рельсов при условной проверке
Ошибка
no block given (yield)
transaction.rb
class Transaction < ActiveRecord::Base
# Require packages
require 'time'
# Associations
belongs_to :user
has_one :banking_information_form
# Nested attributes
accepts_nested_attributes_for :banking_information_form
# Validations
validates_associated :banking_information_form
validate :check_debit_or_credit
validates :transaction_mechanism, :transaction_kind, :debit, :salesforce_id, presence: true
validate :debit, :credit,numericality: { only_integer: true }
end
banking_information_form.rb
class BankingInformationForm < ActiveRecord::Base
# Associations
# Belongs to :transaction
belongs_to :owner, foreign_key: "transaction_id", class_name: "Transaction"
# Validations
validates :financial_institution, :transit_number, :bank_account_number, presence: true, :unless => :cheque_transaction?
validates :transit_number, length: {is: 5,
too_short: "Your transit number is 5 digits long.",
too_long: "Your transit number is 5 digits long."}
validates :bank_account_number, length: {minimum: 4, maximum: 12,
too_short: "Your bank account number will be between 4 and 12 digits long.",
too_long: "Your bank account number will be between 4 and 12 digits long."}
private
def cheque_transaction?
self.transaction.transaction_mechanism == "Cheque"
end
конец
1. "В банковской информации валидация должна быть запущена только тогда, когда (транзакция) поле transaction_mechanism родителя установлен в положение" check ". 2. По какой-то причине, когда я задал транзакционный_механизм для« проверки »в форме, он по-прежнему вызывает форму банковской информации валидации " Итак, для параметра transaction_mechanism задано значение 'check', чтобы оно вызывалось? что это за проблема? – Ajay
@ Ajay Спасибо за указание этого. Исправлен вопрос, чтобы иметь смысл! – Questifer