我正在編寫一個導入excel格式數據表的庫存系統。有3列,它是item_name,顏色,價格如何查找和合並RAILS中的所有ActiveRecord副本4
很多時候,item_name會是一樣的,但是顏色會有所不同。我想合併記錄的所有顏色屬性與相同的item_name
例如。
item_name => "groovy pants", colour => "BLK", price => "$199"
item_name => "groovy pants", colour => "GRY", price => "$199"
item_name => "groovy pants", colour => "RED", price => "$199"
我想記錄合併成一個單一的一個
item_name => "groovy pants", colour => "BLK,GRY,RED", price => "$199"
,並刪除所有已合併的那些的。
謝謝!
*********編輯********** 這裏是我從Rodrigo提供的解決方案中獲取的塊。
StoreMarkdown.all.each do |markdown|
duplicated = StoreMarkdown.find_by item_name: markdown.item_name
puts duplicated
if duplicated.size > 0
product.colour = product.colour + ",#{duplicated.map(&:colour).join(',')}"
product.save!
duplicated.destroy_all
end
以下是重複
StoreMarkdown Load (0.2ms) SELECT "store_markdowns".* FROM "store_markdowns"
StoreMarkdown Load (0.1ms) SELECT "store_markdowns".* FROM "store_markdowns" WHERE "store_markdowns"."item_name" = 'Heust Hoodie' LIMIT 1
#<StoreMarkdown:0x007fa2cf93d7c0>
CACHE (0.0ms) SELECT "store_markdowns".* FROM "store_markdowns" WHERE "store_markdowns"."item_name" = 'Heust Hoodie' LIMIT 1
#<StoreMarkdown:0x007fa2cc211260>
CACHE (0.1ms) SELECT "store_markdowns".* FROM "store_markdowns" WHERE "store_markdowns"."item_name" = 'Heust Hoodie' LIMIT 1
#<StoreMarkdown:0x007fa2cda0dc38>
CACHE (0.1ms) SELECT "store_markdowns".* FROM "store_markdowns" WHERE "store_markdowns"."item_name" = 'Heust Hoodie' LIMIT 1
#<StoreMarkdown:0x007fa2cda17be8>
StoreMarkdown Load (0.3ms) SELECT "store_markdowns".* FROM "store_markdowns" WHERE "store_markdowns"."item_name" = 'Shine Jacket' LIMIT 1
#<StoreMarkdown:0x007fa2cbfac8f8>
CACHE (0.1ms) SELECT "store_markdowns".* FROM "store_markdowns" WHERE "store_markdowns"."item_name" = ' Shine Jacket' LIMIT 1
#<StoreMarkdown:0x007fa2cda544d0>
StoreMarkdown Load (0.3ms) SELECT "store_markdowns".* FROM "store_markdowns" WHERE "store_markdowns"."item_name" = 'Stres Pant' LIMIT 1
#<StoreMarkdown:0x007fa2cbfc7e78>
CACHE (0.0ms) SELECT "store_markdowns".* FROM "store_markdowns" WHERE "store_markdowns"."item_name" = 'Stres Pant' LIMIT 1
#<StoreMarkdown:0x007fa2cc249b60>
CACHE (0.0ms) SELECT "store_markdowns".* FROM "store_markdowns" WHERE "store_markdowns"."item_name" = 'Stres Pant' LIMIT 1
#<StoreMarkdown:0x007fa2cc273e88>
StoreMarkdown Load (0.6ms) SELECT "store_markdowns".* FROM "store_markdowns" WHERE "store_markdowns"."item_name" = 'Together Pant' LIMIT 1
#<StoreMarkdown:0x007fa2cf96b3f0>
CACHE (0.1ms) SELECT "store_markdowns".* FROM "store_markdowns" WHERE "store_markdowns"."item_name" = 'Together Pant' LIMIT 1
#<StoreMarkdown:0x007fa2d080a0f0>
輸出好像duplicated
會在由線項目行,和duplicated.size正在返回未定義的方法中,由於是duplicated
在一個有效記錄的對象阻止
沒有相關的一切,我會在我解釋不清楚。只有1個Model,名爲StoreMarkdown,而item_name,color和price是每個Markdown項目的所有屬性。 – 2015-02-09 18:44:51