2014-03-12 70 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'。 我只需要一个查询。 –