Rake won't create my table...

Hi there... sorry if this is a double post. I tried posting this
earlier and can't see the listing for it.

I've created the following model files...

class Cartclass < ActiveRecord::Base
    belongs_to :product
end

class Carttype < ActiveRecord::Base
    belongs_to :product
end

class Manufacturer < ActiveRecord::Base
    belongs_to :product
end

class Product < ActiveRecord::Base
    has_one :manufacturer
    has_one :carttype
    has_one :cartclass
end

... and added the following migration script....

class CreateProducts < ActiveRecord::Migration
  def self.up
    create_table :products do |t|
      t.column :name, :string
      t.column :carttype_id, :integer
      t.column :cartclass_id, :integer
      t.column :manufacturer_id, :integer
      t.column :shortnum, :string
      t.column :partnumber, :string
      t.column :boxnumber, :string
      t.column :stock, :string
      t.column :colour, :string
    end
  end

  def self.down
    drop_table :products
  end
end

... but when I try running rake db:migrate, it seems to completely skip
over this without creating a table. No error messages or anything.

Am I missing something?

Thanks,
Brandon

berklee wrote:

Hi there... sorry if this is a double post. I tried posting this
earlier and can't see the listing for it.

I've created the following model files...

class Cartclass < ActiveRecord::Base
    belongs_to :product
end

class Carttype < ActiveRecord::Base
    belongs_to :product
end

class Manufacturer < ActiveRecord::Base
    belongs_to :product
end

class Product < ActiveRecord::Base
    has_one :manufacturer
    has_one :carttype
    has_one :cartclass
end

... and added the following migration script....

class CreateProducts < ActiveRecord::Migration
  def self.up
    create_table :products do |t|
      t.column :name, :string
      t.column :carttype_id, :integer
      t.column :cartclass_id, :integer
      t.column :manufacturer_id, :integer
      t.column :shortnum, :string
      t.column :partnumber, :string
      t.column :boxnumber, :string
      t.column :stock, :string
      t.column :colour, :string
    end
  end

  def self.down
    drop_table :products
  end
end

... but when I try running rake db:migrate, it seems to completely skip
over this without creating a table. No error messages or anything.

Am I missing something?

Thanks,
Brandon

>

Hey

Make sure that the migration file's prefix number is smaller than the
value in your schema_info table in your database. Rails uses this number
to determine which migrations are yet to be run. This assumes you've ran
migrations before, if you haven't you won't have a schema_info table and
I have no idea what the problem may be :slight_smile:

Also, I notice that your belongs_to statements are in your Carttype,
Cartclass and Manufacturer models, but you're creating the foreign keys
in your products table. AFAIK, foreign keys go in the table
corresponding to the belongs_to statement (as with has_many and belongs_to).

Cheery-o
Paul, Gustav

Also, I notice that your belongs_to statements are in your Carttype,
Cartclass and Manufacturer models, but you’re creating the foreign keys

in your products table. AFAIK, foreign keys go in the table
corresponding to the belongs_to statement (as with has_many and belongs_to).

Cheery-o
Paul, Gustav

Thanks very much, I’ll take a look at that later today.

Why does that seem counter-intuitive? If my cartclass, carttype and manufacturer tables are lookup items for a product, I would consider them children of the product, normally… wouldn’t it make sense for these child items to belong to the parent?