A
Andrew Libby
Greetings,
I'm having some troubles getting single table inheritance
working. I'm outside of rails, and I _think_ I understand
the way this whole thing is supposed to work. I've got
tables in a PostgreSQL database, (principal and user, the
User class extends Principal).
When I run the following code I get an error like so:
/usr/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/base.rb:1789:in
`method_missing': undefined method `first_name=' for
#<User:0xb7d815cc @attributes={"type"=>"User"},
@new_record=true> (NoMethodError)
When I change the class definition of User to extend
ActiveRecord::Base the code works and I wind up with rows in
the users table.
Any ideas what I'm not doing correctly?
The code:
#!/usr/bin/ruby
#CREATE TABLE principals (
# id integer DEFAULT nextval('id_seq'::text) NOT NULL,
# "type" text
#);
#
#
#CREATE TABLE users (
# id integer DEFAULT nextval('id_seq'::text) NOT NULL,
# username text,
# "password" text,
# first_name text,
# last_name text
#);
require 'rubygems'
require 'active_record'
ActiveRecord::Base.establish_connection(
:adapter => "postgresql",
:host => "localhost",
:username => "org",
assword => "xx",
:database => "org"
)
class Principal < ActiveRecord::Base
end
class User < Principal
end
u = User.new
u.first_name = 'joejoe'
I'm having some troubles getting single table inheritance
working. I'm outside of rails, and I _think_ I understand
the way this whole thing is supposed to work. I've got
tables in a PostgreSQL database, (principal and user, the
User class extends Principal).
When I run the following code I get an error like so:
/usr/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/base.rb:1789:in
`method_missing': undefined method `first_name=' for
#<User:0xb7d815cc @attributes={"type"=>"User"},
@new_record=true> (NoMethodError)
When I change the class definition of User to extend
ActiveRecord::Base the code works and I wind up with rows in
the users table.
Any ideas what I'm not doing correctly?
The code:
#!/usr/bin/ruby
#CREATE TABLE principals (
# id integer DEFAULT nextval('id_seq'::text) NOT NULL,
# "type" text
#);
#
#
#CREATE TABLE users (
# id integer DEFAULT nextval('id_seq'::text) NOT NULL,
# username text,
# "password" text,
# first_name text,
# last_name text
#);
require 'rubygems'
require 'active_record'
ActiveRecord::Base.establish_connection(
:adapter => "postgresql",
:host => "localhost",
:username => "org",
assword => "xx",
:database => "org"
)
class Principal < ActiveRecord::Base
end
class User < Principal
end
u = User.new
u.first_name = 'joejoe'