Ruby on Rails将多个对象合并为一个

时间:2013-05-28 09:41:34

标签: ruby-on-rails object merge instances

我有以下问题:

我有一个名为Foo的类,这个类的一些实例如下:

@foo1
@foo2
@foo3

这些实例中的每一个都有一个名为:description的属性,其中包含如下文字:

@foo1.description = "Lorem"
@foo2.description = "ipsum"
@foo3.description = "dolore"

现在我想合并/合并上面的三个对象,以便我之后只有一个像这样的实例:

@foo1.description = "Lorem ipsum dolore"

有谁知道我怎么做这个合并?

感谢。

编辑更多背景:

我有一个名为Risk的类和很多实例。 Risk类的实例的属性是id,description,issue,references和target_ids,因为Risk类的实例可以具有has_many目标。

在我的风险索引视图中显示所有风险我想要一个额外的复选框列,我可以检查我想要合并的所有风险。然后有一个名为“Merge”的按钮,如果按下该按钮,则复选框中选中的所有风险应合并到第一个被检查的风险中。

2 个答案:

答案 0 :(得分:0)

你可以这样做:

descriptions = Foo.where(:id => [@foo1, @foo2, @foo3]).map(&:description)
new_description = descriptions.join
@foo1.description = new_description
@foo1.save!
@foo2.destroy
@foo3.destroy

答案 1 :(得分:0)

@foo1.description = "Lorem"
@foo2.description = "ipsum"
@foo3.description = "dolore"
@foos = @foo1 + @foo2 + @foo3

desc_array = []
@foos.each do |foo|
  desc_array << foo.description
end

@foo1.description = desc_array.join
@foo1.description.save()