I have been using RoRfor a few days, so excuse me if this is a basic
question.
I am trying to save a model object from an action in a controller.
When I call a method on the model object that causes a state change,
then call save, no sql is generated.
However, if I modify the model object property directly from the
controller, then call save, sql is generated.
Here is an example of what I am talking about:
Model object
-----------------
class MyClass < ActiveRecord::Base
def modifyModel
aDate = Date.today
end
end
Controller
-------------
# this method generates a sql update
def method1
@myClass = MyClass.find(params[:id])
@myClass.aDate = Date.today
@budget_entry.save!
<...rest of code omitted...>
end
# this method does not generate a sql update
def method2
@myClass = MyClass.find(params[:id])
@myClass.modifyModel
@budget_entry.save!
<...rest of code omitted...>
end
Can someone please steer me in the right direction? I want to
encapsulate the state change to certain methods of the model.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
Frederick Cheung
2008-Dec-01 08:38 UTC
Re: calling save on model object does not generate a sql update
On Dec 1, 12:51 am, wb <wbow...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> I have been using RoRfor a few days, so excuse me if this is a basic > question. > > I am trying to save a model object from an action in a controller. > > When I call a method on the model object that causes a state change, > then call save, no sql is generated. > However, if I modify the model object property directly from the > controller, then call save, sql is generated. >The first thing is that save on an unchanged object is a no-op as of rails 2.1 (when partial updates was added).> def modifyModel > aDate = Date.today > endThis method does not change the aDate attribute: it just sets a local variable called aDate (which is forgotten about as soon as that method returns). To disambiguate and force ruby to call your accessor you need to do self.aDate = Date::today Fred --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---