Rails console显示执行的Sql语句
调试Active Record时经常会用到rails console。默认时并不会显示执行的SQL语句,可以先在rails console中执行下面语句,显示出SQL:
ActiveRecord::Base.logger=Logger.new(STDOUT)
调试Active Record时经常会用到rails console。默认时并不会显示执行的SQL语句,可以先在rails console中执行下面语句,显示出SQL:
ActiveRecord::Base.logger=Logger.new(STDOUT)
如何把class和ActiveRecord对应起来,比如我有四张表,进行组合查询,但是要用存储过程来实现,怎么把存储过程查过来的数据和某个自定义的类class abc对应起来?
rails是不建议使用存储过程的,因为它会破坏ORM的操作数据库的惟一性。
但你也可以使用,参见:http://apidock.com/rails/ActiveRecord/Querying/find_by_sql
Connection#execute(sql)方法是不返回数据的,仅仅是能执行存储过程而已。
另外rails里所有单个查询都只会返回“一种对象”,即使你sql里select a.name, b.name from ***也只能返回前一种对象”a”,后来的对象会被舍弃。参见:http://api.rubyonrails.org/classes/ActiveRecord/Querying.html#method-i-find_by_sql
你也可以使用find_by_sql来执行存储过程,这样就能返回一种对象。