быстрый способ будет использовать : pluck , если вы просто возвращаете массив заголовков (я предполагаю, нет: id), то это будет очень быстро
def index
@titles = Video.pluck(:title)
respond_to do |format|
format.xml { render :xml => @titles }
format.json { render :json => @titles }
end
end
: pluck будет работать намного быстрее, чем любой другой параметр, потому что он возвращает массив только с запрошенными данными. Он не создает экземпляр всего объекта ActiveRecord для каждой строки базы данных. Потому что это рубин, эти экземпляры занимают большую часть времени. Вы также можете сделать:
@videos_ary = Video.pluck(:id, :title)
response = @videos_ary.map {|va| { id: va[0], title: va[1] }}
если вы не хотите использовать карандаш SQL, это очень хорошо