Que voulez-vous créer manuellement une requête spéciale non basée sur un modèle particulier? Une colonne ici, une colonne là, peut-être un compte, une somme, ou une autre caluculation. Voici une façon dont je suis venu avec ...Est-ce un bon moyen d'obtenir des données arbitraires de la base de données
>> results = ActiveRecord::Base.connection.execute(
'SELECT location, count(*) AS count FROM contracts
GROUP BY location
ORDER BY location')
=> #<Mysql::Result:0x103197e50>
>> arr = []
=> []
>> results.each { |row| arr << [row.first, row.last] }
=> #<Mysql::Result:0x103197e50>
>> arr
=> [[nil, "189"], ["", "4"], ["Canceled", "12"], ["Cancelled", "4"], ["Closed", "1"], ["Contract - Asst", "4"], ["Contracts - Admin", "5"], ["Exec - Operations", "2"], ["Exec - Policy", "1"], ["Executive", "1"], ["Finance", "25"], ["Fully Executed", "3631"], ["General Counsel", "11"], ["On-Hold", "27"], ["Pending Distribution", "2"], ["Pending Signature", "40"], ["Per Stephen W.", "1"], ["Project Manager", "26"], ["Upcoming", "1"]]
Mais je suis comme le pire programmeur jamais. Comment un bon programmeur le ferait-il?
En particulier, existe-t-il un moyen plus simple d'accéder aux données dans l'objet Mysql::Result
? Pourquoi ai-je un Mysql::Result
au lieu d'une structure de données généralisée non spécifique à la base de données?
(S'il importe, dans ce cas particulier, je vais utiliser le 2d Array pour remplir un menu de sélection, mais il pourrait être quelque chose.)
S'agit-il des requêtes spécifiques que vous essayez d'exécuter? Si c'est le cas, vous (ou moi, ou un autre répondant) pouvez écrire une chaîne ActiveRecord qui obtiendra les données dont vous avez besoin. –