Ruby 如何使用';每个';方法?
我正在尝试使用Rails执行此非基本查询:Ruby 如何使用';每个';方法?,ruby,arrays,ruby-on-rails-3.2,Ruby,Arrays,Ruby On Rails 3.2,我正在尝试使用Rails执行此非基本查询: proj_repartitions = ProjRepartition.includes(:proj_contributions).find( proj_project.proj_charges.each{|pc| pc.proj_repartition_id} ) 关键是我需要将一个“id”数组传递给find方法。 我想从ActiveRecord对象数组中提取这些“id”,其中每个对象都有一个“id”属性 当我尝试使用Rails控制台时: proj
proj_repartitions = ProjRepartition.includes(:proj_contributions).find( proj_project.proj_charges.each{|pc| pc.proj_repartition_id} )
关键是我需要将一个“id”数组传递给find
方法。
我想从ActiveRecord对象数组中提取这些“id”,其中每个对象都有一个“id”属性
当我尝试使用Rails控制台时:
proj_project.proj_charges.each{|pc| pc.proj_repartition_id}
我得到了与proj_项目完全相同的数组。proj_收费
我做错了什么
==更新===
根据答案,我的最终工作代码是:
proj_project.proj_charges.collect{|pc| pc.proj_repartition_id}
与其使用每个try-map或collect,不如返回一个数组。与其使用每个try-map或collect,不如返回一个数组。每个都只执行每个项目的do块代码,但不“保存”返回值 Collect和Map为数组中的每个项目和返回值执行do块代码
希望这是有意义的每个项目只执行每个项目的do块代码,而不“保存”返回值
proj_project.proj_charges.map(&:proj_repartition_id)
Collect和Map为数组中的每个项目和返回值执行do块代码
希望这是有道理的
proj_project.proj_charges.map(&:proj_repartition_id)
短文
proj_project.proj_charges.map{|pc| pc.proj_repartition_id}
短文
proj_project.proj_charges.map{|pc| pc.proj_repartition_id}
伟大的它与“collect”一起工作。我仍然想知道为什么它不适用于每个…每个都只是一种循环方式,但不返回任何内容,而collect返回一个数组。有没有可能找到最好的答案?太好了!它与“collect”一起工作。我仍然想知道为什么它不适用于每个…每个都只是一种循环方式,但不返回任何内容,而collect返回一个数组。有没有可能找到最好的答案?