我有一个对象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
答案 0 :(得分:3)
答案 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 }
希望它会有所帮助。