Forum: Ruby on Rails convention for multiple id reference

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.
David N. (Guest)
on 2008-10-30 15:12
Hi,

Here's the thing :
I have a table with languages (name, label, id).

languages
id
name
label

I'd like another table people with primary_language and
secondary_langage
that should refer to a language_id.

people
id
firstname
familyname
primary_language -> language_id
secondary_language -> language_id


Because I got 2 references, I don't know how I can do. I think I have to
explicitly say in the Person and Language model that primary_language
and secondary_language is a language_id. How can I do ?

Thanks
Maurício L. (Guest)
on 2008-10-30 15:16
(Received via mailing list)
Here's how the table would look:

people
id
firstname
familyname
primary_language -> primary_language_id
secondary_language -> secondary_language_id

And the class:

class Person
    belongs_to :primary_language, :class_name => 'Language'
    belongs_to :secondary_language, :class_name => 'Language'
end

-
Maurício Linhares
http://alinhavado.wordpress.com/ (pt-br) | http://blog.codevader.com/
(en)
João Pessoa, PB, +55 83 8867-7208



On Thu, Oct 30, 2008 at 10:12 AM, David N.
Naga harish K. (Guest)
on 2008-10-30 15:27
For assigning the language id you need to assign the language_id before
saving the record. this should be

record.primary_language_id = language.id
record.secondary_language_id  = language.id
record.save!

In your person model you can say,
  belongs_to :primary_language, :class_name => "Language", :foreign_key
=> "primary_language_id"
for the relation ship.
So in this case People.primary_language will be the language record.
As for the Rails coding use the column name as "primary_language_id"
instead of "primary_language".

>
> people
> id
> firstname
> familyname
> primary_language -> language_id
> secondary_language -> language_id
>
>
> Because I got 2 references, I don't know how I can do. I think I have to
> explicitly say in the Person and Language model that primary_language
> and secondary_language is a language_id. How can I do ?
>
> Thanks
This topic is locked and can not be replied to.