Моя Transaction
модель принадлежит_2 UserWallet
(sender_wallet
, receiver_wallet
) экземплярам.И я проверяю наличие этих двух экземпляров, среди прочих атрибутов currency, amount...
При создании, я также удостоверяюсь, что у sender_wallet
достаточно денег для создания этой транзакции
class Transaction < ApplicationRecord
belongs_to :sender_wallet, class_name: 'UserWallet'
belongs_to :receiver_wallet, class_name: 'UserWallet'
validates :sender_wallet, :receiver_wallet, :amount, :currency, presence: true
validate :validate_balance, on: :create
def validate_balance
if sender_wallet.balance < amount
errors.add(:amount, 'Not enough money')
end
end
end
Проблема заключается в том, что при использованииbelong_to
shoulda-matcher для sender_wallet, он устанавливает sender_wallet в nil и вызывает validate_balance, который выбрасывает
NoMethodError: undefined method `balance' for nil:NilClass
Разве это не должно произойти, потому что sender_wallet не установлен?Я пытался закопаться в нее с помощью консоли, и когда я делаю
Transaction.create(amount: 10000, currency: 'EUR')
, она тоже не получается
Спасибо за вашу помощь