Necesito escribir un script ruby independiente que se supone que se ocupa de la base de datos. Usé el código que se proporciona a continuación en los rieles 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
pero obteniendo error: -
`<main>': undefined method `execute' for #<ActiveRecord::ConnectionAdapters::ConnectionPool:0x00000002867548> (NoMethodError)
¿Qué me estoy perdiendo aquí?
SOLUCIÓN
Después de obtener la solución de denis-bu, la usé de la siguiente manera y eso también funcionó.
@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
fuente
fuente
connection.execute
lugar deconnection().execute
fuente
ActiveRecord::Base.connection.execute("SQL query")
ActiveRecord::Base.connection_pool.checkin(connection)
apidock.com/rails/ActiveRecord/ConnectionAdapters/…Recomiendo usar en
ActiveRecord::Base.connection.exec_query
lugar deActiveRecord::Base.connection.execute
que devuelve unActiveRecord::Result
(disponible en rieles 3.1+) con el que es un poco más fácil trabajar.A continuación, puede acceder a él en varias el resultado de varias maneras como
.rows
,.each
o.to_hash
De los documentos :
nota: copié mi respuesta de aquí
fuente
También puede usar find_by_sql
fuente
Qué tal esto :
Debe tener instalada la gema TinyTds, ya que no lo especificó en su pregunta, no usé Active Record
fuente