2016-06-22 20 views
0

我试图保存由braintree创建到我的数据库的客户ID。我可以看到正在对布伦特里创建,并在我的终端也表达了相同的ID,但试图分配到我的数据库中的列时,它似乎并没有被保存从braintree api分配数据库值

I, [2016-06-22T23:30:13.267296 #8775] INFO -- : [Braintree] [22/Jun/2016 13:30:13 UTC] POST /merchants/xxxxx/customers 201 
86502732 


def create_braintree_customer 
    # self.access_token = SecureRandom::hex(9+rand(6)) if access_token.nil? 
    result = Braintree::Customer.create(
     :first_name => self.first_name, 
     :last_name => self.last_name, 
     :email => self.email, 
     :phone => self.mobile 
    ) 
    if result.success? 
     puts result.customer.id 
     self.customer_cim_id = result.customer.id 
    else 
     p result.errors 
    end 
    end 
+0

嗯,你正在赋值'self.customer_cim_id = result.customer.id',但你把它保存到数据库?或者你的方法被一些before_save回调调用? –

+0

使用after_create –

回答

0

在after_create模型的变化将不会被保存再次。或者使用before_create,before_save和这样的回调,或者执行update_attribute或update_column(如果您不想再次触发回调)。

 update_column(:customer_cim_id, result.customer.id) 
+1

我实际上试图在before_方法中执行Braintree调用,以确保我可以通过Braintree验证并将所有信息保存在一个数据库调用中。 –