I am developing my application with mysql but I am using Heroku to deploy it and am forced to use PG.
I have an issue with the following statement:
<% current_user_savings = Saving.where{user_id == my{current_user}} %>
<% @latest_savings = Saving.where{product_id.not_in(current_user_savings.select{product_id})}.group{product_id} %>
So it work on my computer but when deploying to heroku I have the following issue :
ActionView::Template::Error (PGError: ERROR: column "savings.id" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: SELECT "savings".* FROM "savings" WHERE "savings"."product_...
SELECT "savings".* FROM "savings" WHERE "savings"."product_id" NOT IN (SELECT "savings"."product_id" FROM "savings" WHERE "savings"."user_id" = 1) GROUP BY "savings"."product_id"):
I really have no idea on how to fix that and make it work on heroku.
Gemfile as requested : source 'https://rubygems.org'
ruby '1.9.3'
gem 'rails', '3.2.7'
gem 'compass_twitter_bootstrap', '2.0.3'
gem 'bcrypt-ruby', '3.0.1'
gem 'faker', '1.0.1'
gem 'will_paginate', '3.0.3'
gem 'bootstrap-will_paginate', '0.0.6'
gem 'omniauth-facebook', '1.4.0'
gem 'railroady'
gem 'devise', '2.1.2'
gem 'devise_invitable'
gem 'simple_form'
gem "mongoid", "~> 3.0.0"
gem 'thin'
gem 'best_in_place'
gem "jquery-fileupload-rails"
gem 'paperclip'
gem "squeel"
gem 'client_side_validations'
gem 'wicked'
gem 'koala'
gem 'aws-sdk'
gem 'bson_ext'
group :development, :test do
gem 'sqlite3'
end
group :development, :test do
gem 'annotate', '2.5.0'
end
group :test, :development do
gem 'rspec-rails'
end
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'compass-rails', '1.0.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
gem 'jquery-ui-rails'
group :test do
gem 'capybara'
gem 'factory_girl_rails'
end
group :production do
gem 'pg', '0.12.2'
end
Thank you all for your help I ended up doing that and it's working on PG in local !
Saving.select("DISTINCT ON (savings.product_id) * ").where{product_id.not_in(current_user_savings.select{product_id})}.group("savings.user_id, savings.updated_at, savings.id, savings.product_id, savings.price,savings.wishlist_id, savings.saved, savings.created_at")
Having that issue made me switch my db from mysql to pg in dev so no more surprise in heroku !