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 "):
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.
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?
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
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.