我有一个名为Transaction的嵌套表单,其中包含一个名为Banking Information Form的子对象。当父母(交易)transaction_mechanism字段设置为“检查”时,不应触发银行信息验证。出于某种原因,当我将表单中的transaction_mechanism设置为“check”时,它仍然调用银行信息表单验证。在bank_information_form模型中,我有一个名为cheque_transaction的方法?如果transaction_mechanism是“check”,应该防止触发验证,但是我收到一个错误。在条件验证中没有给出块(yield)rails错误
错误
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字段设置为银行业信息验证应该只触发”检查“ 2.由于某种原因,当我在表单中设置transaction_mechanism为”check“时,它仍然调用银行信息表单验证“ 因此,transaction_mechanism设置为'检查'类型,所以它被调用?那么问题是什么? – Ajay 2015-01-09 23:38:58
@Ajay谢谢你指出。修复这个问题是有道理的! – Questifer 2015-01-09 23:44:31