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
815 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!

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