简体   繁体   中英

Preview activerecord queries in rails console?

Is there a way to preview queries in the Rails console without executing them?

Edit: I would like to be able to preview destructive queries without executing them:

u = User.first
d = User.open_documents.first

I'd like to preview this without execution:

u.open_documents.delete(d)

The proposed answer of adding.to_sql at the end of the expression works for

u.open_documents.to_sql

but when called on

u.open_documents.delete(d).to_sql

executes the delete(:) and produces an error:

NoMethodError: undefined method `to_sql' for #<Array:0x585e4a8>

when called like this, I also get an error:

u.open_documents.first.to_sql
NoMethodError: undefined method `to_sql' for #<Array:0x585e4a8>

Any ideas for a workaround?

You can call.to_sql on an ActiveRecord::Relation to see the SQL that would be executed.

User.where(:id => 4).to_sql
 => "SELECT \"users\".* FROM \"users\"  WHERE \"users\".\"id\" = 4" 

Also, the console will only automatically execute the relation (and instantiate the objects) if it's the last command on the line, so you can do this:

relation = User.where(:id => 4); 1
=> 1

and thus set a variable to the relation without running it.

I'm not actually sure which of these two you wanted to do, but they're both handy tricks.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM