我有一个来自数据库db_groups = DbGroups.all
以及来自某些“元数据”的自定义groups
数组。属性group.id
和group.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
什么是解决此任务的正确方法?
答案 0 :(得分:1)
假设您使用的是rails,您可以使用as_json
将模型转换为哈希值。 E.g。
db_groups_h = db_groups.map(&:as_json)
然后添加您的属性:
db_groups_h.each{ |db| db[:env] = group.env if db.id == group.id }
有关详细信息,请参阅this answer。