act_as_list とともに has_many_polymorphs を使用しています。ローカルではすべて正常に動作しますが、heroku では、acts_as_list メソッドがいくつか呼び出されるたびにエラーが発生します。つまり、リスト内のアイテムの追加または削除のために、新しい位置で多数のレコードを更新するものです。
act_as_list メソッドの例:
def decrement_positions_on_higher_items(position)
acts_as_list_class.update_all(
"#{position_column} = (#{position_column} - 1)", "#{scope_condition} AND #{position_column} <= #{position}"
)
end
Postgres エラーの例
ActiveRecord::StatementInvalid (PGError: ERROR: operator does not exist: character varying - integer
LINE 1: UPDATE "ads_placements" SET position = (position - 1) WHERE ...</p>
^
AdsPlacment.rb
acts_as_list :scope => 'placement_id=#{placement_id} AND placement_type=#{quote_value placement_type}'