Hi, Ruby 1.8.4 Rails 1.1.4 Windows XP Pro I''m hitting an issue with migrations that I suspect relates to pluralization. Here''s the migration: class Hardware < ActiveRecord::Migration def self.up create_table :hardware do |h| h.column :vendor, :string, :limit => 32 h.column :model, :string, :limit => 32 end Hardware.create(:vendor => ''Foo'', :model => ''Bar'') end def self.down drop_table :hardware end end Here''s the model: class Hardware < ActiveRecord::Base set_table_name "hardware" has_many :schedules end When I run the migration the table creation occurs, but then I get this error: -- create({:vendor=>"Foo", :model=>"Bar"}) rake aborted! undefined method `create'' for #<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter:0x39293cc> My guess is that it was expecting a "hardwares" table instead of "hardware", and is getting confused. But, I didn''t see a method in the docs to set the table name ala ActiveRecord. Or am I missing something obvious here? I checked the docs and Google, but didn''t find anything. Below is the full trace. Thanks, Dan rake aborted! undefined method `create'' for #<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter:0x39293cc> c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.3/lib/active_record/mig ration.rb:272:in `send'' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.3/lib/active_record/mig ration.rb:272:in `method_mis sing'' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.3/lib/active_record/mig ration.rb:256:in `say_with_t ime'' c:/ruby/lib/ruby/1.8/benchmark.rb:293:in `measure'' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.3/lib/active_record/mig ration.rb:256:in `say_with_t ime'' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.3/lib/active_record/mig ration.rb:270:in `method_mis sing'' ./db/migrate//004_hardware.rb:13:in `real_up'' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.3/lib/active_record/mig ration.rb:210:in `migrate'' c:/ruby/lib/ruby/1.8/benchmark.rb:293:in `measure'' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.3/lib/active_record/mig ration.rb:210:in `migrate'' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.3/lib/active_record/mig ration.rb:332:in `migrate'' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.3/lib/active_record/mig ration.rb:327:in `migrate'' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.3/lib/active_record/mig ration.rb:294:in `up'' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.3/lib/active_record/mig ration.rb:285:in `migrate'' c:/ruby/lib/ruby/gems/1.8/gems/rails-1.1.4/lib/tasks/databases.rake:4 c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.1/lib/rake.rb:387:in `execute'' c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.1/lib/rake.rb:387:in `execute'' c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.1/lib/rake.rb:357:in `invoke'' c:/ruby/lib/ruby/1.8/thread.rb:135:in `synchronize'' c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.1/lib/rake.rb:350:in `invoke'' c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.1/lib/rake.rb:1906:in `run'' c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.1/lib/rake.rb:1906:in `run'' c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.1/bin/rake:7 c:/ruby/bin/rake.bat:25 This communication is the property of Qwest and may contain confidential or privileged information. Unauthorized use of this communication is strictly prohibited and may be unlawful. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy all copies of the communication and any attachments.
Hi -- On Tue, 8 Aug 2006, Berger, Daniel wrote:> Hi, > > Ruby 1.8.4 > Rails 1.1.4 > Windows XP Pro > > I''m hitting an issue with migrations that I suspect relates to > pluralization. Here''s the migration: > > class Hardware < ActiveRecord::Migration > def self.up > create_table :hardware do |h| > h.column :vendor, :string, :limit => 32 > h.column :model, :string, :limit => 32 > end > > Hardware.create(:vendor => ''Foo'', :model => ''Bar'') > end > > def self.down > drop_table :hardware > end > end > > Here''s the model: > > class Hardware < ActiveRecord::Base > set_table_name "hardware" > has_many :schedules > end > > When I run the migration the table creation occurs, but then I get this > error: >y -- create({:vendor=>"Foo", :model=>"Bar"})> rake aborted! > undefined method `create'' for > #<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter:0x39293cc> > > My guess is that it was expecting a "hardwares" table instead of > "hardware", and is getting confused. But, I didn''t see a method in the > docs to set the table name ala ActiveRecord.Could the problem be that you''ve got two classes named Hardware? Maybe name the migration class CreateHardware and see what happens. David -- http://www.rubypowerandlight.com => Ruby/Rails training & consultancy ----> SEE SPECIAL DEAL FOR RUBY/RAILS USERS GROUPS! <----- http://dablog.rubypal.com => D[avid ]A[. ]B[lack''s][ Web]log http://www.manning.com/black => book, Ruby for Rails http://www.rubycentral.org => Ruby Central, Inc.
> -----Original Message----- > From: rails-bounces@lists.rubyonrails.org > [mailto:rails-bounces@lists.rubyonrails.org] On Behalf Of > dblack@wobblini.net > Sent: Tuesday, August 08, 2006 9:18 AM > To: rails@lists.rubyonrails.org > Subject: Re: [Rails] Problem with plurals, migrations? > > > Hi -- > > On Tue, 8 Aug 2006, Berger, Daniel wrote: > > > Hi, > > > > Ruby 1.8.4 > > Rails 1.1.4 > > Windows XP Pro > > > > I''m hitting an issue with migrations that I suspect relates to > > pluralization. Here''s the migration: > > > > class Hardware < ActiveRecord::Migration > > def self.up > > create_table :hardware do |h| > > h.column :vendor, :string, :limit => 32 > > h.column :model, :string, :limit => 32 > > end > > > > Hardware.create(:vendor => ''Foo'', :model => ''Bar'') > > end > > > > def self.down > > drop_table :hardware > > end > > end > > > > Here''s the model: > > > > class Hardware < ActiveRecord::Base > > set_table_name "hardware" > > has_many :schedules > > end > > > > When I run the migration the table creation occurs, but then I get > > this > > error: > > > y -- create({:vendor=>"Foo", :model=>"Bar"}) > > rake aborted! > > undefined method `create'' for > > #<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter:0x39293cc> > > > > My guess is that it was expecting a "hardwares" table instead of > > "hardware", and is getting confused. But, I didn''t see a method in > > the docs to set the table name ala ActiveRecord. > > Could the problem be that you''ve got two classes named > Hardware? Maybe name the migration class CreateHardware and > see what happens. > > > DavidOh, duh, thanks. I need more caffeine. - Dan This communication is the property of Qwest and may contain confidential or privileged information. Unauthorized use of this communication is strictly prohibited and may be unlawful. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy all copies of the communication and any attachments.