Ich muss ein eigenständiges Ruby-Skript schreiben, das sich mit der Datenbank befassen soll. Ich habe den unten in Schiene 3 angegebenen Code verwendet
@connection = ActiveRecord::Base.establish_connection(
:adapter => "mysql2",
:host => "localhost",
:database => "siteconfig_development",
:username => "root",
:password => "root123"
)
results = @connection.execute("select * from users")
results.each do |row|
puts row[0]
end
aber Fehler bekommen: -
`<main>': undefined method `execute' for #<ActiveRecord::ConnectionAdapters::ConnectionPool:0x00000002867548> (NoMethodError)
Was fehlt mir hier?
LÖSUNG
Nachdem ich die Lösung von denis-bu bekommen hatte, benutzte ich sie wie folgt und das funktionierte auch.
@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
sql
ruby-on-rails
neeraj
quelle
quelle
connection.execute
lieber alsconnection().execute
quelle
ActiveRecord::Base.connection.execute("SQL query")
ActiveRecord::Base.connection_pool.checkin(connection)
apidock.com/rails/ActiveRecord/ConnectionAdapters/…Ich würde empfehlen,
ActiveRecord::Base.connection.exec_query
anstelle vonActiveRecord::Base.connection.execute
aActiveRecord::Result
(verfügbar in Rails 3.1+) zu verwenden, was etwas einfacher zu handhaben ist.Dann können Sie es in verschiedenen Zugriff auf das Ergebnis auf verschiedene Weise wie
.rows
,.each
oder.to_hash
Aus den Dokumenten :
Hinweis: Ich habe meine Antwort von hier kopiert
quelle
Sie können auch find_by_sql verwenden
quelle
Wie wäre es damit :
Sie müssen TinyTds gem installiert haben, da Sie es in Ihrer Frage nicht angegeben haben. Ich habe Active Record nicht verwendet
quelle