У меня возникают некоторые проблемы в RoR с некоторыми модельными методами, которые я устанавливаю. Я пытаюсь построить метод на одной модели с аргументом, который получает значение по умолчанию (ноль). В идеале, если значение передается методу, он будет делать что-то отличное от поведения по умолчанию. Вот настройки:
В настоящее время у меня есть четыре модели: Market, Deal, Merchant и BusinessType
Ассоциации выглядят так:
class Deal
belongs_to :market
belongs_to :merchant
end
class Market
has_many :deals
has_many :merchants
end
class Merchant
has_many :deals
belongs_to :market
belongs_to :business_type
end
class BusinessType
has_many :merchants
has_many :deals, :through => :merchants
end
Я пытаюсь получить некоторые данные, основанные на типе бизнеса (для краткости я значительно упростил возврат):
class BusinessType
def revenue(market=nil)
if market.nil?
return self.deals.sum('price')
else
return self.deals(:conditions => ['market_id = ?',market]).sum('price')
end
end
end
Итак, если я сделаю что-то вроде:
puts BusinessType.first.revenue
Я получаю ожидаемый результат, то есть сумму цены всех сделок, связанных с этим типом бизнеса. Однако, когда я делаю это:
puts BusinessType.first.revenue(1)
Он по-прежнему возвращает сумму всех сделок, а НЕ сумму всех сделок с рынка 1. Я также пытался:
puts BusinessType.first.revenue(market=1)
Тоже без удачи.
Что мне не хватает?
Спасибо!