Does Rails have a mode which ensures associations work at the object level (i.e. prior to any DB sav

Hi,

I’m noted with Rails that if one assigns one object (say Book “b”) to
another object (say Chapter “c”) that the call “b.chapters” doesn’t
work.

Question: Is there a way to ensures associations work both ways at the
object level (i.e. prior to any DB saves)? (i.e. so in the above cases
after I allocate a Book against a Chapter (e.g. c.book = b), that
“b.chapters” should then work?

Overall example:
b = Book.new
c = Chapter.new
c.book = b
c.book ==> works and gives b object
b.chapters ==> DOES NOT WORK - gives []

Also:
b = Book.new
c = Chapter.new
b.chapters = [c]
b.chapters ==> works
c.book ==> DOES NOT WORK

Notes:

  • This is a specific question I have (relates to what I’m trying to
    achieve
    is a separate post "Validation spanning multiple models(tables) - how
    can
    this "):

Thanks in advance


Greg
http://blog.gregnet.org/

There doesn’t seem to be and from the object level doing:

book.chapters << chapter

Doesn’t mean that chapter.book will be assigned, as you haven’t
assigned it yourself. In most programming languages there is no way to
make a two-way association automatically. Even well know ORM tools
like Hibernate don’t do this, as it’s way too intrusive.

But you can always override rails default behaviour.

Maurício Linhares
http://alinhavado.wordpress.com/ (pt-br) | http://blog.codevader.com/
(en)

On Wed, Jan 14, 2009 at 10:53 PM, Greg H.

any pointers/ideas re how to over-ride the Rails behavior for some
classes?

I had a quick look at how an association value is assigned & it looked
a bit hairy (all this reflection stuff)…wondering if it maybe
non-trivial & have gottchas?

tks

On 1/15/09, Maurício Linhares [email protected] wrote:

But you can always override rails default behaviour.

c = Chapter.new

http://blog.gregnet.org/


Greg
http://blog.gregnet.org/

On 15 Jan 2009, at 02:23, Greg H. wrote:

any pointers/ideas re how to over-ride the Rails behavior for some
classes?

I had a quick look at how an association value is assigned & it looked
a bit hairy (all this reflection stuff)…wondering if it maybe
non-trivial & have gottchas?

There is a plugin (

) which implements a solution to this. There is a proposal to
integrate it (or a variant of it) into core.

Fred