【问题标题】: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
    

    【讨论】:

      【解决方案2】:

      你需要fields

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

      查看更多:How to fetch only specified fields of model with DataMapper?

      【讨论】:

        【解决方案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)
          

          【讨论】:

          • pluck 方法也是 ActiveRecord。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-02-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多