Fix bug: Whole order fees being charged once per variant. Exchange.any_variant was returning duplicate rows.

This commit is contained in:
Rohan Mitchell
2014-03-13 12:10:07 +11:00
parent 07fec3c892
commit affb2a5743
2 changed files with 4 additions and 2 deletions

View File

@@ -20,7 +20,7 @@ class Exchange < ActiveRecord::Base
scope :from_enterprises, lambda { |enterprises| where('exchanges.sender_id IN (?)', enterprises) }
scope :to_enterprises, lambda { |enterprises| where('exchanges.receiver_id IN (?)', enterprises) }
scope :with_variant, lambda { |variant| joins(:exchange_variants).where('exchange_variants.variant_id = ?', variant) }
scope :any_variant, lambda { |variants| joins(:exchange_variants).where('exchange_variants.variant_id IN (?)', variants) }
scope :any_variant, lambda { |variants| joins(:exchange_variants).where('exchange_variants.variant_id IN (?)', variants).select('DISTINCT exchanges.*') }
scope :with_product, lambda { |product| joins(:exchange_variants).where('exchange_variants.variant_id IN (?)', product.variants_including_master) }
def clone!(new_order_cycle)

View File

@@ -114,10 +114,12 @@ describe Exchange do
it "finds exchanges with any of a number of variants" do
v1 = create(:variant)
v2 = create(:variant)
v3 = create(:variant)
ex = create(:exchange)
ex.variants << v1
ex.variants << v2
Exchange.any_variant([v1, v2]).should == [ex]
Exchange.any_variant([v1, v2, v3]).should == [ex]
end
it "finds exchanges with a particular product's master variant" do