将每个嵌套资源的参数添加到数组中

时间:2014-05-17 15:24:06

标签: arrays ruby-on-rails-4 nested-resources

我想将每个嵌套资源的参数添加到数组中。主要资源是stream,嵌套资源是videos

@stream = Stream.friendly.find(params[:id])
@firstvideo = @stream.videos.first

我想存储

array[] = [firstvideo.video_id , secondvideo.video_id , thirdvideo.video_id .....]

video_id是每个视频的参数。如何创建一个可以实现此目的的方法?

1 个答案:

答案 0 :(得分:0)

使用pluck从关联中获取视频ID:

ids = Stream.friendly.find(params[:id]).videos.pluck(:id)

这将生成一个select video_id from videos where ...查询,并且只实例化返回的ID数组,从而为每条记录构建Video对象的昂贵过程。

如果您已经实例化了Video个对象列表,请使用map生成一系列ID:

ids = @videos.map(&:id) # equivalent to .map { |v| v.id }