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


#1

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/


#2

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.


#3

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 removed_email_address@domain.invalid wrote:

But you can always override rails default behaviour.

c = Chapter.new

http://blog.gregnet.org/


Greg
http://blog.gregnet.org/


#4

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 (
http://github.com/h-lame/parental_control/tree/master
) which implements a solution to this. There is a proposal to
integrate it (or a variant of it) into core.

Fred