# Need help cleaning up a model method

**URL:** <https://www.ruby-forum.com/t/need-help-cleaning-up-a-model-method/112026>\
**Category:** Ruby\
**Created:** [August 14, 2007, 12:32pm UTC](https://www.ruby-forum.com/t/need-help-cleaning-up-a-model-method/112026 "2007-08-14T12:32:48Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![giantcranes](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/ecd19e/32.png) [@giantcranes](https://www.ruby-forum.com/u/giantcranes)\
**Post date:** [August 14, 2007, 12:32pm UTC](https://www.ruby-forum.com/t/need-help-cleaning-up-a-model-method/112026/1 "2007-08-14T12:32:48Z")

</div>

Hi,

I need a little help cleaning up the method below. In my .NET days I  
would have let this pass, but I am trying to be a good ruby citizen by  
keeping things simple.

This is from a seller model which has many vehicles:

def total\_retail\_price  
if @@total\_retail\_price.nil?  
@@total\_retail\_price = self.vehicles.sum(:retail\_price)  
@@total\_retail\_price = 0 unless @@total\_retail\_price  
end  
@@total\_retail\_price  
end

If I didn’t have to worry about the seller having 0 vehicles I could  
just use:

def total\_retail\_price  
@@total\_retail\_price ||= self.vehicles.sum(:retail\_price)  
end

Does anyone have any suggestions on how I can fix improve on this?

Thanks,  
GiantCranes

---

<div class="post-metadata">

**Author:** ![giantcranes](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/ecd19e/32.png) [@giantcranes](https://www.ruby-forum.com/u/giantcranes)\
**Post date:** [August 14, 2007, 12:39pm UTC](https://www.ruby-forum.com/t/need-help-cleaning-up-a-model-method/112026/2 "2007-08-14T12:39:13Z")

</div>

Apologies, I meant to post this in the Rails group.

---

<div class="post-metadata">

**Author:** ![giantcranes](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/ecd19e/32.png) [@giantcranes](https://www.ruby-forum.com/u/giantcranes)\
**Post date:** [August 14, 2007, 12:57pm UTC](https://www.ruby-forum.com/t/need-help-cleaning-up-a-model-method/112026/3 "2007-08-14T12:57:33Z")

</div>

what about this?

def total\_retail\_price  
@@total\_retail\_price ||= self.vehicles.sum(:retail\_price) || 0  
end

---

<div class="post-metadata">

**Author:** ![giantcranes](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/ecd19e/32.png) [@giantcranes](https://www.ruby-forum.com/u/giantcranes)\
**Post date:** [August 14, 2007, 7:46pm UTC](https://www.ruby-forum.com/t/need-help-cleaning-up-a-model-method/112026/4 "2007-08-14T19:46:39Z")

</div>

Thanks to you both for your help

---

<div class="post-metadata">

**Author:** ![giantcranes](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/ecd19e/32.png) [@giantcranes](https://www.ruby-forum.com/u/giantcranes)\
**Post date:** [August 14, 2007, 1:04pm UTC](https://www.ruby-forum.com/t/need-help-cleaning-up-a-model-method/112026/5 "2007-08-14T13:04:40Z")

</div>

On 8/14/07, Giant C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> if @@total\_retail\_price.nil?  
> @@total\_retail\_price ||= self.vehicles.sum(:retail\_price)  
> end
> 
> Does anyone have any suggestions on how I can fix improve on this?

sum should be zero for no vehicles though, shouldn’t it?

Thanks,
