Commit c4f59660f0f2849aee78c2e7267cd12d434e2470
1 parent
5da04adb
Exists in
master
and in
29 other branches
products-block: fetch sample products without load all products on the memory
ActionItem3167
Showing
2 changed files
with
4 additions
and
11 deletions
Show diff stats
app/models/products_block.rb
... | ... | @@ -46,17 +46,10 @@ class ProductsBlock < Block |
46 | 46 | |
47 | 47 | def products(reload = false) |
48 | 48 | if product_ids.blank? |
49 | - products_list = owner.products(reload) | |
50 | - result = [] | |
51 | - [4, products_list.size].min.times do | |
52 | - p = products_list.rand | |
53 | - result << p | |
54 | - products_list -= [p] | |
55 | - end | |
56 | - result | |
49 | + owner.products.order('RANDOM()').limit([4,owner.products.count].min) | |
57 | 50 | else |
58 | - product_ids.map {|item| owner.products.find(item) } | |
59 | - end | |
51 | + owner.products.where(:id => product_ids) | |
52 | + end.compact | |
60 | 53 | end |
61 | 54 | |
62 | 55 | end | ... | ... |
test/unit/products_block_test.rb
... | ... | @@ -86,7 +86,7 @@ class ProductsBlockTest < ActiveSupport::TestCase |
86 | 86 | block.stubs(:owner).returns(enterprise) |
87 | 87 | |
88 | 88 | block.product_ids = [p1, p3, p5].map(&:id) |
89 | - assert_equal [p1, p3, p5], block.products | |
89 | + assert_equivalent [p1, p3, p5], block.products | |
90 | 90 | end |
91 | 91 | |
92 | 92 | should 'save product_ids' do | ... | ... |