Ho bisogno di scrivere uno script ruby autonomo che dovrebbe occuparsi del database. Ho usato il codice indicato di seguito in Rails 3Rails 3 esegue query sql personalizzate senza un modello
@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
ma ottenere errore: -
`<main>': undefined method `execute' for #<ActiveRecord::ConnectionAdapters::ConnectionPool:0x00000002867548> (NoMethodError)
che cosa manco qui?
SOLUZIONE
Dopo aver ottenuto la soluzione da denis-bu ho usato come segue e che ha funzionato troppo.
@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
FWIW, l'utilizzo di parametri vu non è un rubino idiomatico. Quindi esegui 'connection.execute' piuttosto che' connection(). Execute' – radixhound
Funziona anche su Rails 4. –
Funziona davvero su Rails 4.0.5 –