0

我正在尝试使用 Rails 执行此非基本查询:

proj_repartitions = ProjRepartition.includes(:proj_contributions).find( proj_project.proj_charges.each{|pc| pc.proj_repartition_id} )

关键是我需要将一个“ids”数组传递给该find方法。我想从 ActiveRecord 对象数组中提取这些“id”,其中每个对象都配备了“id”属性。

当我在 Rails 控制台上尝试时:

proj_project.proj_charges.each{|pc| pc.proj_repartition_id}

我得到了完全相同的数组proj_project.proj_charges

我究竟做错了什么?

=== 更新 ===

根据答案,我的最终工作代码是

proj_project.proj_charges.collect{|pc| pc.proj_repartition_id}
4

3 回答 3

1

而不是使用每个尝试映射或收集 - 他们应该返回一个数组。

于 2013-03-12T16:20:40.067 回答
1

每个只为每个项目执行 do 块代码,但不“保存”返回值。

Collect and Map 为每个项目执行 do 块代码并返回数组中的值。

希望这是有道理的

于 2013-03-12T16:33:11.533 回答
1
proj_project.proj_charges.map(&:proj_repartition_id)

简短的写作方法

proj_project.proj_charges.map{|pc| pc.proj_repartition_id}
于 2013-03-12T16:39:06.150 回答