2015-10-20 62 views
1

我之间有一个ActiveRecord ::关系:的ActiveRecord ::关联打印特定属性

Order类:

has_many :transactions, :class_name => "OrderTransaction"

OrderTransaction类:

belongs_to :order  
serialize :params 

ActiveRecord::Relation [#OrderTransaction id: 5, order_id: 11, action: "purchase", amount: 26044, success: true, authorization: "8V863650823585301", message: "Success", params: {"timestamp"=>"2015-10-16T23:11:09Z", "ack"=>"Success", "correlation_id"=>"9b5eb7051dbe3", "version"=>"72", "build"=>"18308778", "amount"=>"260.44", "amount_currency_id"=>"USD", "avs_code"=>"X", "cvv2_code"=>"M", "transaction_id"=>"8V863650823585301", "Timestamp"=>"2015-10-16T23:11:09Z", "Ack"=>"Success", "CorrelationID"=>"9b5eb7051dbe3", "Version"=>"72", "Build"=>"18308778", "Amount"=>"260.44", "AVSCode"=>"X", "CVV2Code"=>"M", "TransactionID"=>"8V863650823585301"}, created_at: "2015-10-16 23:11:09", updated_at: "2015-10-16 23:11:09"]

我试图在irb控制台中打印参数[:transaction_id],但我找不到正确的方法来做到这一点。有任何想法吗?

回答

1

这应做到:

OrderTransaction.where(message: "Success").map { |p| p['params']['transaction_id'] } 

为了得到只有一个transaction_id

x = OrderTransaction.where(message: "Success").last 
x['params']['transaction_id'] 
+0

让我们假设我有定义所有的ActiveRecord ::关系到一个变量名为x。我如何表达它? –

+0

你的意思是,'x = params'然后你可以这样做:'x.map {| p | p ['transaction_id']}'这会给你所有'transaction_id's。如果您有任何其他问题,请告诉我。 –

+0

我得到这个错误:'NoMethodError:undefined方法'params'for#