0

我有一个对象学生的集合。我只想得到所有学生的身份证。学生模型在 Datamapper 中实现。我是 Ruby on Rails 和 Datamapper 的新手。有什么办法可以让我获得收藏学生中所有学生的身份。所以基本上我想要以下东西:

 students = Student.all 
 ids = students.get_ids

我不知道如何实现 get_ids。

4

4 回答 4

1

变量“students”是一个数组,你不应该在它上面应用 get_ids。该函数应该没有参数。

def get_ids
  Student.all.map { |student| student.id }
end
于 2013-09-12T08:23:03.350 回答
0

如果您只想获得活动记录关系,请尝试以下操作:

Student.select(:id)

这应该会返回一个 ActiveRecord 关系,其中包含每个对象中的所有对象和 ID。

如果您想要的不是 ActiveRecord 关系,而只是 id,请使用简单的“pluck”方法

Student.pluck(:id)
于 2013-09-12T08:47:40.597 回答
0

如果您确实需要所有学生对象,请使用students.map(&:id)which 的缩写students.map{|s| s.id}并返回所有 id 的数组。

要直接从您的数据库中获取 id,请使用Student.where(...).pluck(:id)without all,这比实例化所有学生对象要快得多且内存占用更少。

编辑: 对不起,采摘方法仅是 ActiveRecord。但是其他答案可以fields选择。

于 2013-09-12T08:38:28.687 回答
0

你需要fields

Student.all(:fields=>[:id])

查看更多:如何使用 DataMapper 仅获取模型的指定字段?

于 2013-09-12T08:26:24.623 回答