Okay, but unless I'm missing something, doing
a.stories.find_by_title("some string").update_attributes(blah)
or
s = a.stories.find_by_title("some string")
s.update_attributes(blah)
doesn't just associate that Story record as something that
needs to be saved when model object "a" is saved. It in
fact saves it immediately as part of update_attributes(). I was
originally looking for the former behavior. The main idea
was to do all my modification on objects in memory, then
a final "a.save". The idea is that I'm putting off all
my validation until one point in time when everything gets
validated. I was trying to avoid having validations firing
at varying times.
Perhaps it's not doable, or worth doing, but it did seem
odd that this all works like a charm if you're dealing
with *new* objects instead of objects reflecting records
already in the database.
Thanks again.
-glenn
Peter Gumeson wrote:
You bet... any variation on the way you do your save.
The main improvement was the:
a.stories.find_by_title("The Lake")
instead of:
a.find_by_title("The Lake")
Peter
On 10/1/07, Glenn Little <[EMAIL PROTECTED]> wrote:
Didn't see this when I sent the other. But yeah, I was
sort of assuming the transaction wrapping. I was still hoping
to do all my in-memory attribute futzing as a separate step
from the save() (seems clearer that way, allows for a single
separate "a.valid?" call, etc).
-glenn
Peter Gumeson wrote:
Guess I should have read your whole post there...
I havn't tested this, but If you want it to be transactional, try
wrapping it in:
Author.transaction do
a = Author.find(some_id)
a.update_attributes!({middle_name => "Poindexter"})
a.stories.find_by_title("The Lake").update_attributes!({title =>
"The Dry Lake"})
end
(Be sure to use either update_attributes! or save! so it will throw an
exception)
Peter
On 10/1/07, Peter Gumeson <[EMAIL PROTECTED]> wrote:
How bout...
a = Author.find(some_id)
a.update_attribute(middle_name, "Poindexter")
a.stories.find_by_title("The Lake").update_attribute(title, "The Dry Lake")
Peter
On 10/1/07, Glenn Little <[EMAIL PROTECTED]> wrote:
Sorry, fixing confusing typo:
Glenn Little wrote:
Say I have a couple of tables:
author :has_many => stories
story :belongs_to => author
In a form handler I'd like to do something like:
a = Author.find(some_id)
a.middle_name = "Poindexter"
s = a.find_by_title("The Lake")
s.title = "The Dry Lake"
I'd like to then transactionally (or even not) do
a.save!
and have the change to "s" get saved as well. Is this possible?
It works fine if s is a new record created with build(), or something like
s = Story.new
a.stories << s
a.save!
Is there any magic like "<<" or build() that can be used for existing
objects to attach them to a parent object for purposes of
cascading the save()?
Thanks!
-glenn
_______________________________________________
Sdruby mailing list
[email protected]
http://lists.sdruby.com/mailman/listinfo/sdruby
--
"A flute with no holes is not a flute,
and a doughnut with no hole is a Danish."
- Zen philosopher, Basho
_______________________________________________
Sdruby mailing list
[email protected]
http://lists.sdruby.com/mailman/listinfo/sdruby
_______________________________________________
Sdruby mailing list
[email protected]
http://lists.sdruby.com/mailman/listinfo/sdruby
_______________________________________________
Sdruby mailing list
[email protected]
http://lists.sdruby.com/mailman/listinfo/sdruby