Maison > base de données > tutoriel mysql > Comment exécuter des requêtes SQL personnalisées dans Rails 3 sans utiliser de modèle ?

Comment exécuter des requêtes SQL personnalisées dans Rails 3 sans utiliser de modèle ?

DDD
Libérer: 2024-12-26 15:27:14
original
763 Les gens l'ont consulté

How to Execute Custom SQL Queries in Rails 3 Without Using a Model?

Requêtes SQL personnalisées Rails 3 sans modèle

Dans Rails 3, l'exécution de requêtes SQL personnalisées sans utiliser de modèle peut être réalisée en établissant un lien direct connexion à la base de données. Cependant, le code que vous avez fourni a rencontré un problème avec la méthode d'exécution.

Pour résoudre ce problème, vous pouvez utiliser l'approche suivante :

  1. Établissez une connexion à la base de données à l'aide d'ActiveRecord : Base.establish_connection.
  2. Récupérez l'objet de connexion à l'aide d'ActiveRecord::Base.connection.
  3. Exécutez la requête SQL personnalisée à l'aide de connection.execute.

Voici une version modifiée de votre code qui intègre ces modifications :

@connection = ActiveRecord::Base.establish_connection(
  :adapter => "mysql2",
  :host => "localhost",
  :database => "siteconfig_development",
  :username => "root",
  :password => "root123"
)

results = @connection.connection.execute("select * from users")
results.each do |row|
  puts row[0]
end
Copier après la connexion

Alternativement, comme suggéré dans la solution fournie, vous pouvez utilisez également le :as => :hash lors de l'itération sur les résultats pour accéder aux colonnes par leurs noms :

@connection = ActiveRecord::Base.establish_connection(
  :adapter => "mysql2",
  :host => "localhost",
  :database => "siteconfig_development",
  :username => "root",
  :password => "root123"
)

sql = "SELECT * from users"
@result = @connection.connection.execute(sql)
@result.each(:as => :hash) do |row|
  puts row["email"]
end
Copier après la connexion

En utilisant cette approche, vous pouvez exécuter des requêtes SQL personnalisées directement sans vous fier à un modèle.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal