返回ID数组

时间:2010-11-11 16:24:01

标签: ruby-on-rails

您好 如何从数据库调用返回数组。

采用以下格式:["141", "138", "123", "128", "137", "139"]

4 个答案:

答案 0 :(得分:70)

在Rails 4中:( ht @ri4a

User.ids # integer array
User.ids.map(&:to_s) # string array

在Rails 3/4中:

User.pluck(:id) # integer array
User.pluck(:id).map(&:to_s) # string array

旧答案

如果你想直接进入DB:

> ActiveRecord::Base.connection.select_values("select id from users")
["1", "2", "5", "6", "7", "8", "3", "10", "11", "9"]

如果您已有型号:

User.all(:select => :id).collect(&:id)

第一种方法比第二种方法更快,因为它不会产生构建模型实例的成本。

答案 1 :(得分:16)

如果您有has_many,那么在has_many方面,您可以获取相关对象的ID,如下所示:

def User
  has_many :tasks
end

def Task
  belongs_to :user
end

ids = User.find(1).task_ids

答案 2 :(得分:6)

怎么样:

ClassName.all.collect { |obj| obj.id }

答案 3 :(得分:3)

如果使用Model,则有新方法 - pluck。 Comment.pluck(:id)#[1,2,3 ...]