Je rencontre des problèmes de RoR avec certaines méthodes de modélisation que je définis. J'essaie de construire une méthode sur un modèle, avec un argument qui reçoit une valeur par défaut (nil). L'idéal est que si une valeur est passée à la méthode, elle fera autre chose que le comportement par défaut. Voici la configuration:Méthode ignorant la valeur du paramètre dans Ruby on Rails, en utilisant la valeur par défaut à la place
J'ai actuellement quatre modèles: marché, Deal, Merchant et BusinessType
Les associations se présentent comme suit:
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
Je suis en train de tirer des données en fonction du type d'entreprise (je l'ai grandement simplifié le retour, par souci de concision):
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
donc, si je fais quelque chose comme:
puts BusinessType.first.revenue
J'obtiens le résultat attendu, c'est-à-dire la somme du prix de toutes les affaires associées à ce type d'entreprise. Cependant, quand je fais ceci:
puts BusinessType.first.revenue(1)
Il retourne encore le prix de la somme de toutes les transactions, pas le prix de la somme de toutes les transactions de marché 1. J'ai aussi essayé:
puts BusinessType.first.revenue(market=1)
également avec pas de chance.
Qu'est-ce qui me manque?
Merci!