4

我运行了代码@transaction = Transaction.new然后我给了它一些值:

<Transaction id: nil, debit_uri: "d8hmFJ89CIQUZMBoiPMnvWkQJW/bank_...", credit_uri: "d8hmciqLOg9bCIQUZMBoiPMnvWkQJW/cards...", seller_id: 2, buyer_id: 6, product_id: 31, price: #<BigDecimal:b4a6115c,'0.45E2',9(36)>, ship_price: #<BigDecimal:b4a61094,'0.123E3',9(36)>, ship_method: "fedex", created_at: nil, updated_at: nil>

但是当我做@transaction.save!bang(!) 或不做时,我得到了错误:

NoMethodError: undefined method `clear' for nil:NilClass
from /home/alain/.rvm/gems/ruby-1.9.3-head/gems/activemodel-3.2.13/lib/active_model/validations.rb:194:in `valid?'

所以我不知道在哪里寻找错误,因为我的模型几乎没有,也没有称为 clear 的方法。

class Transaction < ActiveRecord::Base
  attr_accessible :buyer_id, :credit_uri, :debit_uri, :price, :product_id, :seller_id, :ship_method, :ship_price
  require 'balanced'  
  attr_reader :errors
end
4

1 回答 1

16

关于 Rails 代码库,错误来自:

attr_reader :errors

这里。尝试将其从您的模型中删除。

为什么?

由于您在创建事务实例时覆盖了errors属性并且没有设置它,Rails 正在尝试执行以下操作:

nil.clear
于 2013-08-14T07:31:25.517 回答