From 2f1193fa360ea2853f7bf75095aa47517bdd6402 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonne=20Ha=C3=9F?= Date: Sat, 31 Aug 2013 17:56:19 +0200 Subject: [PATCH] Fix "prepared statements" errors See https://coderwall.com/p/45ombq --- app/controllers/conversations_controller.rb | 6 ++++-- app/models/user/querying.rb | 6 +++--- lib/evil_query.rb | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/app/controllers/conversations_controller.rb b/app/controllers/conversations_controller.rb index 180c42bf6..07ec4fd2b 100644 --- a/app/controllers/conversations_controller.rb +++ b/app/controllers/conversations_controller.rb @@ -83,8 +83,10 @@ class ConversationsController < ApplicationController def new all_contacts_and_ids = Contact.connection.select_rows( - current_user.contacts.where(:sharing => true).joins(:person => :profile). - select("contacts.id, profiles.first_name, profiles.last_name, people.diaspora_handle").to_sql + Contact.connection.unprepared_statement { + current_user.contacts.where(:sharing => true).joins(:person => :profile). + select("contacts.id, profiles.first_name, profiles.last_name, people.diaspora_handle").to_sql + } ).map{|r| {:value => r[0], :name => Person.name_from_attrs(r[1], r[2], r[3]).gsub(/(")/, "'")} } @contact_ids = "" diff --git a/app/models/user/querying.rb b/app/models/user/querying.rb index ac5a800df..257a07e56 100644 --- a/app/models/user/querying.rb +++ b/app/models/user/querying.rb @@ -27,7 +27,7 @@ module User::Querying opts[:klass] = klass opts[:by_members_of] ||= self.aspect_ids - post_ids = klass.connection.select_values(visible_shareable_sql(klass, opts)).map { |id| id.to_i } + post_ids = klass.connection.select_values(visible_shareable_sql(klass, opts)).map(&:to_i) post_ids += klass.connection.select_values("#{construct_public_followings_sql(opts).to_sql} LIMIT #{opts[:limit]}").map {|id| id.to_i } end @@ -88,9 +88,9 @@ module User::Querying end def construct_shareable_from_self_query(opts) - conditions = {:pending => false } + conditions = {:pending => false, :author_id => self.person_id } conditions[:type] = opts[:type] if opts.has_key?(:type) - query = self.person.send(opts[:klass].to_s.tableize).where(conditions) + query = opts[:klass].where(conditions) if opts[:by_members_of] query = query.joins(:aspect_visibilities).where(:aspect_visibilities => {:aspect_id => opts[:by_members_of]}) diff --git a/lib/evil_query.rb b/lib/evil_query.rb index a9923d4cd..395022b8b 100644 --- a/lib/evil_query.rb +++ b/lib/evil_query.rb @@ -6,7 +6,7 @@ module EvilQuery end def id_sql(relation, id_column) - relation.select(id_column).to_sql + @class.connection.unprepared_statement { relation.select(id_column).to_sql } end end