views:

168

answers:

1

Hey all -

I have a model in my Rails app that uses the :class_name attribute for has_one:

class Foo < ActiveRecord:Base
  has_one :main_bar, :class_name => "Bar"

  # ...
end

I'm a bit unsure what to put in the migration for this class now. Can I use references? What will Rails be looking for as the column name for :main_bar? Can I do it like this?

class CreateFoos < ActiveRecord::Migration
  def self.up
    create_table :foos do |t|
      t.references :main_bar
    end
  end

  def self.down
    drop_table :foos
  end
end

Thanks!

+3  A: 

You don't put anything in the table with the "has_one" relationship. The foreign_key goes in the other table. In your example above, you'd need to add a foreign key to your bars table.

In the migration you can use:

t.references :foo

or:

t.integer :foo_id

Either one will work.

Jaime Bellmyer