Muszę napisać samodzielny skrypt ruby, który będzie obsługiwał bazę danych. Użyłem kodu podanego poniżej w listwach 3
@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
ale pojawia się błąd: -
`<main>': undefined method `execute' for #<ActiveRecord::ConnectionAdapters::ConnectionPool:0x00000002867548> (NoMethodError)
czego tu brakuje?
ROZWIĄZANIE
Po otrzymaniu roztworu od denis-bu użyłem go w następujący sposób i to też zadziałało.
@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
źródło
źródło
connection.execute
raczej niżconnection().execute
źródło
ActiveRecord::Base.connection.execute("SQL query")
ActiveRecord::Base.connection_pool.checkin(connection)
wątkamiPolecam używanie
ActiveRecord::Base.connection.exec_query
zamiast tego,ActiveRecord::Base.connection.execute
które zwraca aActiveRecord::Result
(dostępne w railsach 3.1+), co jest nieco łatwiejsze w użyciu.Następnie można uzyskać do niego dostęp w różny wynik jak na różne sposoby
.rows
,.each
albo.to_hash
Z dokumentów :
uwaga: skopiowałem moją odpowiedź stąd
źródło
Możesz także użyć find_by_sql
źródło
Co powiesz na to :
Musisz mieć zainstalowany klejnot TinyTds, ponieważ nie określiłeś go w swoim pytaniu Nie korzystałem z Active Record
źródło