Many-to-many relationships in rails don't use belongs_to.  Instead, you want to use one of a couple options.  The first is has_and_belongs_to_many:
# app/models/category.rb
class Category < ActiveRecord::Base
  has_and_belongs_to_many :items
end
# app/models/item.rb
class Item < ActiveRecord::Base
  has_and_belongs_to_many :categories
end
And you'll need to add an extra join table in your database, with a migration like this:
class AddCategoriesItems < ActiveRecord::Migration
  def self.up
    create_table :categories_items, :id => false do |t|
      t.integer :category_id
      t.integer :item_id
    end
  end
  def self.down
    drop_table :categories_items
  end
end
You can see that the join table's name is the combination of the two other tables' names.  The tables must be mentioned in alphabetical order as above, and the :id => false needs to be there, since we don't want a primary key on this table.  It will break the rails association.
There's also another, more complex method known as has_many :through if you need to store info about the relationship itself.  I've written a whole article detailing how to do both methods, and when to use each:
Basic many-to-many Associations in Rails
I hope this helps, and contact me if you have any other questions!