Ruby:按地图向模型添加附加参数



我有一个来自数据库db_groups = DbGroups.all的模型

以及来自一些"元数据"的自定义groups数组。 具有属性group.idgroup.env

首先,我只想db_groups,db_group.id = group.id.我正在这样做:

       @metadata['groups'].map do |group|
         db_groups.map { |db| db.id == group.id ? db : nil}
       end.flatten.compact

这工作正常,到目前为止一切顺利:)

现在我想将env参数临时添加到我的db_groups模型中。所以要做一些额外的事情,比如db_groups[:env] = group.env

我尝试使用"地图"执行此操作,但它不起作用,所以像这样:

   @metadata['groups'].map do |group|
     db_groups.map { |db| db.id == group.id ? db[:env] = group.env : nil}
   end.flatten.compact

解决此任务的正确方法是什么?

假设您使用的是 rails,您可以使用 as_json 将模型转换为哈希。

例如
db_groups_h = db_groups.map(&:as_json)

,然后添加您的属性:

db_groups_h.each{ |db| db[:env] = group.env if db.id == group.id }

有关详细信息,请参阅此答案。

最新更新