blgroup
2009-Apr-28 19:38 UTC
How do you make associations when a table has two unique columns?
Having trouble with a somewhat unconventional modelling in Rails 2.2.2. Take three table. 1. User model with primary integer id and a unique string guid. 2. Model X has foreign key to User as integer user_id and its model includes belongs_to :users 3. Model Y has foreign key to User as string user_guid and its model includes belongs_to :users, :foreign_key => ''user_guid'' This tells Rails which column to use in Model Y to look up Users. But How do I tell Rails which column to use in User? In other words, how do I tell Rails to join (or select) from Users.guid instead of Users.id when referencing Y.user? The has_one and has_many association has a :primary_key option, but this seems to be missing on the belongs_to association How do people work around this? Any help would be greatly appreciated. Thanks, =Blair.
Andrew Timberlake
2009-Apr-29 03:15 UTC
Re: How do you make associations when a table has two unique columns?
On Tue, Apr 28, 2009 at 9:38 PM, blgroup <blgroup-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > Having trouble with a somewhat unconventional modelling in Rails > 2.2.2. > > Take three table. > > 1. User model with primary integer id and a unique string guid. > > 2. Model X has foreign key to User as integer user_id and its model > includes > belongs_to :users > > 3. Model Y has foreign key to User as string user_guid and its model > includes > belongs_to :users, :foreign_key => ''user_guid''Are you sure you don''t mean: belongs_to :user, :foreign_key => ''user_guid'' #<- Using singular ''user'' then Y.user should work fine> > > This tells Rails which column to use in Model Y to look up Users. > But How do I tell Rails which column to use in User? > > In other words, how do I tell Rails to join (or select) from > Users.guid instead of Users.id when referencing Y.user? > > The has_one and has_many association has a :primary_key option, but > this seems to be missing on the belongs_to association > > How do people work around this? Any help would be greatly > appreciated. > > Thanks, > =Blair.Setup your user model like this: class User < ActiveRecord::Base set_primary_key :guid end Andrew Timberlake http://ramblingsonrails.com http://www.linkedin.com/in/andrewtimberlake "I have never let my schooling interfere with my education" - Mark Twain