我在设置一些模型方法时遇到了RoR中的一些问题。我试图在一个模型上构建一个方法,其中一个参数被提供一个默认值(nil)。理想的是,如果将值传递给方法,它将执行除默认行为之外的其他操作。下面是设置:方法忽略Ruby on Rails中的参数值,使用默认值代替
我目前有四种模式:市场,交易,商户和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)
还与没有运气。
我错过了什么?
谢谢!