Mixing has_one and has_and_belongs_to_many associations

Posted by Thomas on Stack Overflow See other posts from Stack Overflow or by Thomas
Published on 2011-01-11T17:49:13Z Indexed on 2011/01/11 17:53 UTC
Read the original article Hit count: 209

Filed under:

I'm trying to build a database of urls(links). I have a Category model that has and belongs to many Links.

Here's the migration I ran:

class CreateLinksCategories < ActiveRecord::Migration
  def self.up
    create_table :links_categories, :id => false do |t|
    t.references :link
    t.references :category
  end
end

def self.down
  drop_table :links_categories
  end
end

Here's the Link model:

class Link < ActiveRecord::Base  
  validates :path, :presence => true, :format => { :with  => /^(#{URI::regexp(%w(http     
                                                   https))})$|^$/ }
  validates :name, :presence => true

  has_one :category
end

Here's the category model:

class Category < ActiveRecord::Base
  has_and_belongs_to_many :links
end

And here's the error the console kicked back when I tried to associate the first link with the first category:

>>link = Link.first
=> #<Link id: 1, path: "http://www.yahoo.com", created_at: "2011-01-10...
>>category = Category.first
=> #<category id : 1, name: "News Site", created_at: "2011-01-11...
>>link.category << category
=> ActiveRecord::StatementInvalid: SQLite3::Exception: no such column :           
   categories.link_id:

Are my associations wrong or am I missing something in the database? I expected it to find the links_categories table. Any help is appreciated.

© Stack Overflow or respective owner

Related posts about ruby-on-rails3