开发者

If I use :class_name attribute to has_one, what do I put in the migration?

开发者 https://www.devze.com 2022-12-18 08:23 出处:网络
I have a model in my Rails app that uses the :class_name attribute for has_one: class Foo < ActiveRecord:Base

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.

0

精彩评论

暂无评论...
验证码 换一张
取 消