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)