【问题标题】:Extraction of ids from a collection of objects从对象集合中提取 id
【发布时间】:2013-09-12 08:20:43
【问题描述】:
我有一组学生物品。我只想得到所有学生的身份证。学生模型在 Datamapper 中实现。我是 Ruby on Rails 和 Datamapper 的新手。有什么办法可以让我获得收藏学生中所有学生的身份。所以基本上我想要以下东西:
students = Student.all
ids = students.get_ids
我不知道如何实现 get_ids。
【问题讨论】:
标签:
ruby-on-rails
ruby-datamapper
【解决方案1】:
变量“students”是一个数组,你不应该在它上面应用 get_ids。
该函数应该没有参数。
def get_ids
Student.all.map { |student| student.id }
end
【解决方案3】:
如果您确实需要所有学生对象,请使用students.map(&:id),它是students.map{|s| s.id} 的缩写,并返回一个包含所有 id 的数组。
要直接从您的数据库中获取 id,请使用 Student.where(...).pluck(:id) 而不使用 all,这比实例化所有学生对象要快得多且占用内存更少。
编辑:
抱歉,pluck 方法仅适用于 ActiveRecord。但是其他答案可以使用 fields 选项。
【解决方案4】:
如果你只是想获得一个活跃的记录关系,试试这个:
Student.select(:id)
这应该会返回一个 ActiveRecord 关系,其中包含每个对象中的所有对象和 ID。
如果您想要的不是 ActiveRecord 关系,而只是 id,请使用简单的“pluck”方法
Student.pluck(:id)