Forum: Ruby on Rails Single Table Inheritance question

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.
unknown (Guest)
on 2005-12-19 19:57
(Received via mailing list)
Hello,

I'm having a heck of a time getting Single Table Inheritance to work in
my app.
I have the following models and have scaffolded out Person and Contact.

person.rb
class Person < ActiveRecord::Base
  has_many :contacts
end

client.rb
class Client < Person
end

contact.rb
class Contact < ActiveRecord::Base
  belongs_to :person
end

phone.rb
class Phone < Contact
end

In script/console I?ve run:
 c = Client.find :first
 c.phones.create :contactdata => ?555-555-5555?

and get ?NoMethodError : undefined method ?phones? etc??

I tried moving the relationships in to the client and phone models but
then
there was an SQL error: ?Unknown column contacts.client_id? because the
contacts table has a person_id column not a client_id column. Any help
would be
greatly appreciated.

Hugh


----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.
Duane J. (Guest)
on 2005-12-19 20:33
(Received via mailing list)
On Dec 19, 2005, at 10:54 AM, removed_email_address@domain.invalid wrote:

> end
> phone.rb
> class Phone < Contact
> end
>
> In script/console I?ve run:
>  c = Client.find :first
>  c.phones.create :contactdata => ?555-555-5555?
>
> and get ?NoMethodError : undefined method ?phones? etc??
>
You need to create a phone and then add it to the list of phones:

c = Client.find :first
p = Phone.create :contactdata => '555-555-5555'
c.phones << p

>
> ----------------------------------------------------------------
> This message was sent using IMP, the Internet Messaging Program.
>
> _______________________________________________
> Rails mailing list
> removed_email_address@domain.invalid
> http://lists.rubyonrails.org/mailman/listinfo/rails

Duane J.
(canadaduane)
http://blog.inquirylabs.com/
Duane J. (Guest)
on 2005-12-19 20:36
(Received via mailing list)
On Dec 19, 2005, at 11:31 AM, Duane J. wrote:

>> person.rb
>>   belongs_to :person
>> and get ?NoMethodError : undefined method ?phones? etc??
>>
> You need to create a phone and then add it to the list of phones:
>
> c = Client.find :first
> p = Phone.create :contactdata => '555-555-5555'
> c.phones << p

Hrm.  And it also appears that your relationship is actually
has_many :contacts, so you'd do this instead:

c = Client.find :first
p = Phone.create :contactdata => '555-555-5555'
c.contacts << p


Duane J.
(canadaduane)
http://blog.inquirylabs.com/
This topic is locked and can not be replied to.