Ruby on rails 为什么赢了';这个物体不能保存吗?

Ruby on rails 为什么赢了';这个物体不能保存吗?,ruby-on-rails,ruby,debugging,pry,Ruby On Rails,Ruby,Debugging,Pry,我有以下费用。rb: class Charge < ActiveRecord::Base serialize :response, Hash include HTTParty belongs_to :order def charge_url return "#{Pin.base_url}/1/charges" end def submit(ip) @authorization = {:username => Pin.secret_k

我有以下费用。rb:

class Charge < ActiveRecord::Base

  serialize :response, Hash

  include HTTParty
  belongs_to :order  

  def charge_url
    return "#{Pin.base_url}/1/charges"
  end

  def submit(ip)
    @authorization = {:username => Pin.secret_key, :password => Pin.public_key}
    @params =  {
      'currency' => "USD",
      'description' => "One Testivate Retail Site Search Benchmark report",
      'amount' => 99900,
      'ip_address' => (ip),
      'email' => self.order.user.email,
      'card' => {'number' => self.number,
                'expiry_month' => self.expiry_month,
                'expiry_year' => self.expiry_year,
                'cvc' => self.cvc,
                'name' => self.name,
                'address_line1' => self.address_line1,
                'address_line2' => self.address_line2,
                'address_city' => self.address_city,
                'address_postcode' => self.address_postcode,
                'address_state' => self.state,
                'address_country' => self.country }}
    response = HTTParty.post(self.charge_url, :query => @params, :basic_auth => @authorization)
    self.update_attributes :token => response["response"]["token"], :display_number => response["response"]["display_number"], :response => response
  end    

end
class-ChargePin.secret\u key,:password=>Pin.public\u key}
@参数={
“货币”=>“美元”,
'description'=>“一份Testivate零售网站搜索基准报告”,
“金额”=>99900,
“ip_地址”=>(ip),
'email'=>self.order.user.email,
'card'=>{'number'=>self.number,
“到期月份”=>自到期月份,
“到期年”=>自到期年,
“cvc”=>self.cvc,
'name'=>self.name,
'address_line1'=>self.address_line1,
'address_line2'=>self.address_line2,
'address\u city'=>self.address\u city,
“地址\邮政编码”=>self.address\邮政编码,
'address_state'=>self.state,
'address_country'=>self.country}
response=HTTParty.post(self.charge\u url,:query=>@params,:basic\u auth=>@authorization)
self.update_属性:token=>response[“response”][“token”],:display_number=>response[“response”][“display_number”],:response=>response
终止
终止
当我在控制台中对self调用submit方法时,我得到如下结果:

[30] pry(#<Charge>)> self
+----+----------+---------+-----------+-----------+----------+----------+-----------+----------+----------+----------+----------+----------+-----+----------+----------+----------+----------+----------+-------+----------+----------+
| id | order_id | user_id | token_... | token     | displ... | creat... | update... | card_... | custo... | number   | expir... | expir... | cvc | name     | addre... | addre... | addre... | addre... | state | country  | response |
+----+----------+---------+-----------+-----------+----------+----------+-----------+----------+----------+----------+----------+----------+-----+----------+----------+----------+----------+----------+-------+----------+----------+
| 2  | 9        |         |           | ch_O5d... |          | 2013-... | 2013-1... |          |          | 55200... | 12       | 2014     | 123 | Rolan... | 42 Se... |          | Lathlain |          | 6454  | Austr... | {"res... |
+----+----------+---------+-----------+-----------+----------+----------+-----------+----------+----------+----------+----------+----------+-----+----------+----------+----------+----------+----------+-------+----------+----------+
1 row in set
[31] pry(#<Charge>)> self.save
NoMethodError: undefined method `name' for nil:NilClass
from /Users/steven/.rvm/gems/ruby-1.9.2-p320/gems/activerecord-3.2.11/lib/active_record/transactions.rb:274:in `rescue in rollback_active_record_state!'
down
Error: At bottom of stack, cannot go further!
[33] pry(#<Charge>)> up

Test failure: 

Frame number: 1/97
Frame type: method

From: /Users/steven/.rvm/gems/ruby-1.9.2-p320/gems/pry-remote-0.1.7/lib/pry-remote.rb @ line 284 Object#remote_pry:

    283: def remote_pry(host = PryRemote::DefaultHost, port = PryRemote::DefaultPort)
 => 284:   PryRemote::Server.new(self, host, port).run
    285: end
[30]撬(#)>自己
+----+----------+---------+-----------+-----------+----------+----------+-----------+----------+----------+----------+----------+----------+-----+----------+----------+----------+----------+----------+-------+----------+----------+
|id |订单| id |用户| id |令牌|代币|显示…|创造…|更新…|卡丁…|卡斯托…|编号|到期…|到期…|cvc |名称|地址…|地址…|地址…|地址…|国家|国家|回应|
+----+----------+---------+-----------+-----------+----------+----------+-----------+----------+----------+----------+----------+----------+-----+----------+----------+----------+----------+----------+-------+----------+----------+
|2 | 9 | | | Chu O5d…|2013-... | 2013-1... |          |          | 55200... | 12 | 2014 | 123 |罗兰…|42东南…| |拉斯兰| 6454 |澳大利亚…|{“res…”|
+----+----------+---------+-----------+-----------+----------+----------+-----------+----------+----------+----------+----------+----------+-----+----------+----------+----------+----------+----------+-------+----------+----------+
一排
[31]撬动(#)>自救
NoMethodError:nil:NilClass的未定义方法“name”
from/Users/steven/.rvm/gems/ruby-1.9.2-p320/gems/activerecord-3.2.11/lib/active\u record/transactions.rb:274:“在回滚状态下救援”
向下
错误:在堆栈底部,无法继续!
[33]撬起
测试失败:
帧号:1/97
框架类型:方法
From:/Users/steven/.rvm/gems/ruby-1.9.2-p320/gems/pry-remote-0.1.7/lib/pry-remote.rb@line 284 Object#remote_pry:
283:def remote_pry(主机=PryRemote::DefaultHost,端口=PryRemote::DefaultPort)
=>284:PryRemote::Server.new(自身、主机、端口)。运行
285:完
如果我再次进入submit方法,我最终会进入submit方法。在charge.rb model中没有明确定义回调。我究竟如何才能找到不会保存的NilClass?

如下所示:

self.update_attributes :token => response["response"]["token"], :display_number => response["response"]["display_number"], :response => response.to_hash

(无论如何,响应是一个散列,但是将
添加到\u散列
很有效,所以这很好。)

您的self.name方法是否以类似“user.name”的方式使用另一个模型“或者某个将调用委托给此模型,从而在本例中委托给nil的对象?我没有明确定义@charge.name。它只是charges表中的一个字符串列。