Rails 4 / postgresql 9.4 – 查询并更新数组中的ruby对象

我有一个方法(find_by_sql) 在数组中输出ruby对象,如下所示:

[#] 

如何在raw postgresql中更新数据库中对象的’deal_available’属性?

我尝试了不同的方法来编写它,但我偶然发现它非常具体:它是一个数组,里面有一个ruby对象,我必须设法告诉postgresql 更改deal_available的值:true to deal_available:false。

在本地,我试过:logger.debug“这是更新的结果对象:

  #{@deal_question[0]} 

但我得到:

 # 

以下是@deal_question的创建方式

 @deal_question = Deal.find_by_sql( " SELECT \"deals\".* FROM \"deals\" WHERE (opportunity_id = #{@deal.id} AND deal_available = true) ORDER BY \"deals\".\"id\" ASC LIMIT 1" ) 

我甚至没有postgresql查询在这里建议,因为首先我需要了解如何在数组中查询这个ruby对象。

实际上,您不需要原始SQL查询来更新@deal_question对象的deal_available属性。

您可以使用update_attributes来实现这一目标。

 # assuming @deal_question is an array @deal_question[0].update_attributes(deal_available: false) 

如果您真的想使用原始sql来更新属性,那么请执行以下操作:

 array = [#] # grab the object to be updated @deal_question = array[0] # build the sql query string sql = "UPDATE deals SET deal_available = false WHERE opportunity_id = #{@deal_question.id}" # execute the sql to update the object ActiveRecord::Base.connection.execute(sql)