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.
221df2f2c7b2335086dc2594cdbad8dc?d=identicon&s=25 unknown (Guest)
on 2005-12-19 18: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.
D8cb8c8cd40ddf0cd05241443a591868?d=identicon&s=25 Duane Johnson (Guest)
on 2005-12-19 19:33
(Received via mailing list)
On Dec 19, 2005, at 10:54 AM, hkelsey@adrenalinejunkies.com 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
> Rails@lists.rubyonrails.org
> http://lists.rubyonrails.org/mailman/listinfo/rails

Duane Johnson
(canadaduane)
http://blog.inquirylabs.com/
D8cb8c8cd40ddf0cd05241443a591868?d=identicon&s=25 Duane Johnson (Guest)
on 2005-12-19 19:36
(Received via mailing list)
On Dec 19, 2005, at 11:31 AM, Duane Johnson 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 Johnson
(canadaduane)
http://blog.inquirylabs.com/
This topic is locked and can not be replied to.