Adam Akhtar wrote:
[...]
[...]
>> Use a Pairing class with a polymorphic association.
> 
> I thought polymorphic associations are used when you have several 
> different models which have the same relationship with anohter one. I.e. 
> You want to have comments associated with your models for Photos, Posts 
> and Products for example. In this case however only my alphabet model 
> has a relationship with the pairings model. So im not sure how i 
> implement a polymorphic association here and how that that allow me to 
> create only one pairing record to represent ab or ba.

On rereading, I realize I was wrong.  I thought you had different 
*classes* A-Z, but I realize now that you don't, so that you don't need 
a polymorphic association after all.

> 
> 
> my current setup is
> class Pairing < ActiveRecord::base
> belongs_to :alphabet
> belongs_to :alphabetpartner, :class_name => "Alphabet", :foreign_key => 
> "alphabetpartner_id"

That looks right.

> 
> class Alphabet < ActiveRecord::Base
>   has_many :pairings
>   has_many :alphabetpartners,
> 
> but this requires me to create two records in hte pairings table for ab 
> and ba.

No it doesn't.

[...]
>> Sort the object IDs in some unambiguous way before creating a pairing.
> 
> Can you explain more about what you mean here and are you saying that i 
> have to have two pairs in my pairing table for ab and ba?

No, I am saying you would *not* have to have two pairs.  Rather, when 
you construct a Pairing, pick an unambiguous way of sorting the two 
Alphabet objects so that ab and ba will map to the same thing.  For 
example (untested):

class Pairing < AR::B
  before_create do
    [...@alphabet, @alphabetpartner] = [...@alphabet, 
@alphabetpartner].sort_by {|x| [x.name, x.id]}
  end
end

And BTW, @alphabetpartner should be @alphabet_partner.

Best,
--
Marnen Laibow-Koser
http://www.marnen.org
mar...@marnen.org
-- 
Posted via http://www.ruby-forum.com/.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to