Rails:将关联的一部分推送到数组中的优雅方式

Eas*_*one 0 arrays json model ruby-on-rails associations

我有一个post和一个author模型.

author has_many :posts

现在我有author几个posts

是否有一种优雅的方式来获得只posts' titles作为一个数组,而不是整个post对象?

所以,不只是author.posts而是要像author.posts.only(:title)获得冠军的数组.例如['post1','post2','post3'].

.only(:title)语法来自JSON模块,并且在这种情况下不起作用,但可能有一些更优雅,而不是迭代posts并推titles入新数组.查询数据库的东西select titles from posts where author_id = 23.

aro*_*ero 5

使用 pluck

author.posts.pluck(:title)
Run Code Online (Sandbox Code Playgroud)

http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html#method-i-pluck

动物内脏(列)

此方法旨在通过单个列执行select作为直接SQL查询返回具有指定列名称值的数组值与列具有相同的数据类型.