On 10/25/06, Dan W. <wozniak.dan / gmail.com> wrote:
> Hi, i'm trying to get my ChrissMonster model to pull back the value of
> "eat" in the chriss_monster table and increment the value by 1.
>
> Here's my controller function:
> >>>
> def feed
>   @chriss_monster = ChrissMonster.find(params[:id])
>   @chriss_monster.feed
>   redirect_to :action => 'list'
> end
> <<<
>
> Here's my model:
> >>>
> class ChrissMonster < ActiveRecord::Base
>   def feed
>     ChrissMonster.increment_counter :eat, :id
>   end
> end
> <<<
>
> When I call the controller function, it directs me back to the list
> page, it doesn't give me an error, and it does NOT increment the "eat"
> value.
>
> What am I doing wrong?  How else could I rewrite this?
>

The problem is in your model. My assumption is that your database
table for ChrissMonster has an 'eat' column and an 'id' column with
'id' being the primary key. It looks like your trying increment the
'eat' counter.

class ChirssMonster < ActiveRecord::Base
  def feed
    ChrisMonster.increment_counter 'eat', self['id']
  end
end

This might work. The difference is that I'm telling active record to
increment the 'eat' couonter for the record that has the primary key
of self['id'] -- the id of the record on which the feed method was
invoked.

A shorter version that might work ...

class ChrissMonster < ActiveRecord::Base
  def feed
    increment!( 'eat' )
  end
end

That's all I got. Try posting this question on the ruby on rails list.
They are a lot smarter about rails over there.

Blessings,
TwP