Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 返回ID数组_Ruby On Rails - Fatal编程技术网

Ruby on rails 返回ID数组

Ruby on rails 返回ID数组,ruby-on-rails,Ruby On Rails,嗨 如何从数据库调用返回数组 用这种格式:[“141”、“138”、“123”、“128”、“137”、“139”]怎么样: ClassName.all.collect { |obj| obj.id } 如果您有一个has_many,那么在has_many侧,您可以获得相关对象的ID,如下所示: def User has_many :tasks end def Task belongs_to :user end ids = User.find(1).task_ids 在轨道4中:

嗨 如何从数据库调用返回数组

用这种格式:
[“141”、“138”、“123”、“128”、“137”、“139”]

怎么样:

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

如果您有一个
has_many
,那么在
has_many
侧,您可以获得相关对象的ID,如下所示:

def User
  has_many :tasks
end

def Task
  belongs_to :user
end

ids = User.find(1).task_ids
在轨道4中:(ht)

在Rails 3/4中:

User.pluck(:id) # integer array
User.pluck(:id).map(&:to_s) # string array
旧答案 如果要直接转到数据库:

> 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)

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

如果您使用模型,则有一种新方法-Pull。评论。弹拨(:id)#[1,2,3…]

这给了我[141,138,123,128,137,139]我需要这样的数字周围的“,[“141”,“138”,“123”,“128”,“137”,“139”]试着用
收集(&:id)
替换
收集{u | u.id.}
这实际上是一个评论,不是问题的答案。请使用“添加评论”为作者留下反馈。不,这是一个答案,与公认的答案非常相似。我不知道是什么让你觉得这是一个评论。应该是:
ClassName.pulk(:id)
ClassName.all.collect(&:id)
我同意@Justin。几年后回首往事,我的答案是n00b,可能不配获得3票:)
User.all(:select => :id).collect(&:id)