Never been to CodeSnippets before?

Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world (or not, you can keep them private!)

Uninitialized constant error in Rails migration

UPDATE:
This was because I had pluralized Tiers in its class definition, not because Rails was acting different. The below is not true, but it still is a good idea because if you change any models in the future, it will break subsequent migrations (which would likely happen anyways)

Now for some reason you have to define your models within your migration to get access to their functionality. It's not guaranteed that the migration will have automatic access to your models.

E.g.
class LoadTiersUsers < ActiveRecord::Migration
  extend MigrationHelpers

	class Tier < ActiveRecord::Base; has_and_belongs_to_many :users end
	class User < ActiveRecord::Base; has_and_belongs_to_many :tiers end
	class TiersUsers < ActiveRecord::Base; end
  def self.up
		p "*** Loading user, tier data..."

Creating a table with migrations when using has_and_belongs_to_many

You can find the information at http://api.rubyonrails.org under the "create_table" method. The short answer is this though,

create_table :table_name, :id => false do |t|

end


:id is the part you're looking for, it defaults to true, which creates the :id as an autoincrementing primary key, if you use migrations and want to create the join table, you don't want an "id" column, so use :id => false to override the create_table method and tell it you don't want that primary key.