If I use :class_name attribute to has_one, what do I put in the migration?
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 migrati开发者_开发问答on 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!
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.
精彩评论