当我有很多产品(3000和22000个变种)时,添加新的库存位置需要数小时,因为Spree正在为每个变体创建库存项目。
在此期间,变体表被锁定,整个系统无法使用。是否有一些解决方法或者可能在一些新版本的Spree中修复了它?
我正在使用spree 2.0.3。
答案 0 :(得分:1)
我面临同样的问题,使用> 400K变体,无法添加新的库存位置。因此,我在ruby中创建了一个脚本,并且所有变体都将一个insert语句写入SQL
文件。我必须创建没有propagate_all_variants的库存位置
# lib/create_stock_items.rb
begin
file = File.open("stock_items.sql", "w")
rescue IOError => e
puts e
end
file.write("INSERT INTO spree_stock_items (stock_location_id, variant_id, backorderable) VALUES \n")
variants = Spree::Variant.all.pluck(:id)
length = variants.count
variants.each_with_index do |variant, index|
if index+1 == length
file.write("(#{stock_location_id}, #{variant}, false); \n")
else
file.write("(#{stock_location_id}, #{variant}, false), \n")
end
end
file.close
然后运行bundle exec rails runner lib/create_stock_items.rb -e production
。这将在stock_items.sql
根路径中创建Rails
文件,最后直接在SQL
(rails dbconsole)上加载BD
。
我知道这有点黑客,但对我来说是一个非常快速的解决方案。