2014-03-12 107 views
2

記錄回國後如何使這個查詢中的ActiveRecord:獲取升級的軌道

UPDATE table_name SET column = 'value' WHERE id = 123 RETURNING other_column 

我試圖update_all但它返回update_atributes返回真/假的更改的記錄數量,以及update返回整目的。

在軌道應該是這樣的(僞代碼):

other_column = TableName.where(:id => 123).update_attributes(:column => 'value').returning(:other_column) 
puts other_column 
+0

請用你實施的代碼來詳細說明你的問題。 (模型,控制器等) –

+0

問題已更新 –

回答

2
result_sets = Model.connection.execute("UPDATE table_name SET column = 'value' WHERE id = 123 RETURNING other_column") 
result_sets.each do |result| 
    p result[:other_column] 
end 

如果你只是想更新編號123的單個記錄,你爲什麼不能這樣做呢?

TableName.update(123, :column => 'value').other_column 
+0

如果您打算使用'connection.execute',則必須小心處理SQL中的值的引用/轉義。 –

+0

'connection.execute'將繞過rails驗證,'update'會生成2個查詢:'select','update'。 我只需要一個查詢。 –