从belongs_to关联中获取字段数组?

时间:2013-07-16 06:24:28

标签: ruby-on-rails activerecord

我有一个对象User和object Post。用户has_many帖子和帖子belongs_to用户。 我可以使用以下语法访问用户的帖子:

posts = @user.posts

但是,我想生成一个用户拥有的帖子的ID数组,而不是遍历每个帖子。理想情况下,我想这样做:

ids = @user.posts.id

但是,我收到一个错误,说id是ActiveRecord的无效方法 - 等等......

有没有办法整齐地做到这一点,而不必像以下那样循环:

ids = []
posts = @user.posts
posts.each |post| do
   ids << post.id
end

4 个答案:

答案 0 :(得分:3)

Rails为此提供native method

@user.post_ids

基本上,您可以使用has_many模式引用<singular association name>_ids关联的ID。

答案 1 :(得分:2)

尝试使用ids = posts.map(&:id) or ids = posts.map{|p| p.id }

您也可以尝试使用ids = posts.pluck(:id)

答案 2 :(得分:0)

您也可以使用收藏。 Collect返回Array。

ids = @user.posts.collect(&:id)

答案 3 :(得分:0)

试试这个:

@ids = @user.posts.map{|x| x.id }

希望它会有所帮助。