Rails 3, custom raw instruction SQL insert

J'ai un modèle d'Évaluation. L'évaluation a plusieurs partitions. Chaque fois qu'une nouvelle évaluation est créé, un score record est créé pour chaque utilisateur qui a besoin d'une évaluation (voir ci-dessous pour la méthode actuelle, je suis en utilisant pour ce faire.) Ainsi, par exemple, 40 score enregistrements peuvent être créés à la fois. L'Évaluation propriétaire, alors les mises à jour de chaque score record avec le score de l'Utilisateur.

Je suis à la recherche d'utiliser SQL brut parce que chaque insert est sa propre transaction et il est lent.

Je voudrais le convertir en une masse instruction insert à l'aide de matières SQL:

def build_evaluation_score_items
  self.job.active_employees.each do |employee|
    employee_score = self.scores.build
    employee_score.user_id = employee.id
    employee_score.save
  end
end

Des idées sur la façon dont cela peut être fait? J'ai essayé de l'adapter un exemple de code à partir de Chris Heald Café du site Propulsé mais, pas de dés.

Merci à tous ceux qui sont prêts à vous aider!

EDIT 1

J'ai négligé de mentionner la méthode actuelle est enveloppé dans une transaction.

Donc, essentiellement, je suis en train d'ajouter à cela le bloc de code, donc tout est inséré dans un énoncé (** Ce code snippit est de Chris Heald Café du site Propulsé qui a abordé le sujet. Je voudrais poser la question, mais le poste est > 3 ans.):

inserts = []
TIMES.times do
  inserts.push "(3.0, '2009-01-23 20:21:13', 2, 1)"
end
sql = "INSERT INTO user_node_scores (`score`, `updated_at`, `node_id`, `user_id`)VALUES #{inserts.join(", ")}"

Je serais heureux de montrer le code de certains de mes tentatives qui ne fonctionnent pas...

Merci encore!

Bien, j'ai bricolé quelque chose qui ressemble au code ci-dessus, mais je reçois une instruction SQL invalide erreur autour de la ('evaluation_id' partie. Toutes les pensées?

def build_evaluation_score_items
  inserts = []
  self.job.active_employees.each do |employee|
    inserts.push "(#{self.id}, #{employee.id}, #{Time.now}, #{Time.now})"
  end
  sql = "INSERT INTO scores ('evaluation_id', `user_id`, 'created_at', `updated_at`)VALUES #{inserts.join(", ")}"
  ActiveRecord::Base.connection.execute(sql) 
end

Aucune idée de ce dans les au-dessus de code SQL est à l'origine de l'erreur?

le created_at partie ne fonctionne pas pour moi, puisque c'est la création d'une chaîne de postgres n'est pas de l'analyse. ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR: syntax error at or near "07" LINE 4: (1, 1, 100, 2017-02-20 07:00:56 +0000, 2017-02-20 07...

OriginalL'auteur Angelo Chrysoulakis | 2012-10-03