Ruby on Rails:有没有一种方法可以从数据库中检索数据数组,而Rails不需要实例化任何东西?

Wil*_*nes 3 activerecord ruby-on-rails

我有一个模型,我正在尝试从中检索数据数组,我不需要将数据实例化为Ruby对象.实际上,这只是在我的代码中引入了一个额外的步骤来逐步执行对象并生成一个只包含我需要的数据的新数组.

例:

class Book
  #has attribute in database title
end
Run Code Online (Sandbox Code Playgroud)

我想生成一个数组,其中包含数据库中所有书籍的所有标题.最好的方法是什么?

Jos*_*dez 8

ActiveRecord为您提供了对当前环境数据库的直接挂钩,允许您执行SQL语句并将结果返回到基本结构(数组或散列)中.请参阅:http://ar.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/DatabaseStatements.html

例如:

ActiveRecord::Base.connection.select_values("SELECT title FROM books")
Run Code Online (Sandbox Code Playgroud)

将返回一系列书名(字符串).这不会实例化任何ActiveRecord实例,并且会为您的应用程序提供更高的内存效率.


tam*_*ama 7

在Rails 3.x中,您可以使用pluck直接从DB返回所需属性的数组,而无需实例化对象.

titles = Book.where(:foo => 'bar').pluck(:title)
#SELECT TITLE FROM BOOKS WHERE FOO = 'BAR'
Run Code Online (Sandbox Code Playgroud)