Forum: Ruby on Rails attributes on join model

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
1bac2e65d64faf472cf2ebc94f0f5ee0?d=identicon&s=25 Ara Howard (ahoward)
on 2008-10-28 20:53
(Received via mailing list)
given a setup like

class Parent
  has_many :child_parents
  has_many :children, :through => child_parents
end

and assuming i'd like to store the style of relationship on the
child_parents table, for example

create table child_parents(
  parent_id
  child_id
  is_adopted
)

in otherwords, 'is_adopted' is an attribute of the link between child
and parent, not of the child or parent themselves, how can one access
this simply?

child = parent.children.first
p child.adopted?

is obviously desirable and used to be possible with HABTM
associations.  but that's deprecated.... however there seems to be no
easy way to accomplish something similar with full blown join models.

cheers.
5acf8e6be07793d22e24d8eb24a0e043?d=identicon&s=25 reHa (Guest)
on 2008-10-28 22:03
(Received via mailing list)
On 28 Pa¼, 20:53, "ara.t.howard" <ara.t.how...@gmail.com> wrote:
> create table child_parents(
> p child.adopted?
>
> is obviously desirable and used to be possible with HABTM
> associations.  but that's deprecated.... however there seems to be no
> easy way to accomplish something similar with full blown join models.
>
> cheers.

http://wiki.rubyonrails.org/rails/pages/has_and_be...

"...
has_and_belongs_to_many is great for what it does, but it is only
adequate for simple many-to-many relationships. If your intermediary
table needs to track additional data, then you may instead want to use
ThroughAssociations instead.
..."

Cheers
1bac2e65d64faf472cf2ebc94f0f5ee0?d=identicon&s=25 Ara Howard (ahoward)
on 2008-10-28 22:39
(Received via mailing list)
yeah i'm aware of all that - the issue is that using HM:T give no
simple method of getting back at the *particular* model/row used for
the join.  of course there can by more that one, but it's also the
case that for any given pair of related objects there is exactly one
row in the join model making that relationship and AR provides no
handle on this record, which makes decorating it rather tricky.
4891b0faf6940a1992da2801b52c4735?d=identicon&s=25 Mark Reginald James (Guest)
on 2008-10-29 12:13
(Received via mailing list)
ara.t.howard wrote:
> create table child_parents(
> p child.adopted?
cp = parent.child_parents.first
child = cp.child
p cp.adopted?

--
Rails Wheels - Find Plugins, List & Sell Plugins -
http://railswheels.com
This topic is locked and can not be replied to.