Я пытаюсь получить Ошибки Active Model, работающие в стандартном классе ruby, который я использую для полосы.Добавление ошибок ActiveModel в класс ruby
class Payment
attr_reader :user, :token, :errors
attr_accessor :base
extend ActiveModel::Naming
def initialize(args)
@user = args[:user]
@token = args[:stripe_token]
@errors = ActiveModel::Errors.new(self)
end
def checking_account
begin
account = Stripe::Account.retrieve(user.stripe_account_id)
account.external_account = token
account.save
rescue Stripe::StripeError => e
errors.add(:base, e.message)
end
end
# The following methods are needed to be minimally implemented
def read_attribute_for_validation(attr)
send(attr)
end
def Payment.human_attribute_name(attr, options = {})
attr
end
def Payment.lookup_ancestors
[self]
end
end
теперь я делаю checking_account
неудачу на цели, не поставляя фишку, и я только что вернулся массив в настоящее время говорят:
=> ["Invalid external_account object: must be a dictionary or a non-empty string. See API docs at https://stripe.com/docs'"]
теперь я следовал шаги по http://api.rubyonrails.org/classes/ActiveModel/Errors.html так Я не уверен, почему это не работает, никто не знает, как это исправить?
, когда я звоню:
Payment.new(user: User.find(1)).managed_account
он запускает массив выше, и если я пытаюсь вызвать .errors
на том, что я получаю
NoMethodError: undefined method `errors' for #<Array:0x007f80989d8328>
, который, очевидно, потому, что это массив и формат ISN Правильно.
определить «не работает». – sevenseacat
'payment = Payment.new (пользователь: User.find (1))', а затем 'payment.errors' вы пробовали этот путь? –
да вот что я сделал –