如果我使用:class_name属性到has_one,我应该在迁移中添加什么?

Ste*_*son 6 migration ruby-on-rails reference has-one

我在我的Rails应用程序中有一个模型,它使用以下:class_name属性has_one:

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

  # ...
end
Run Code Online (Sandbox Code Playgroud)

我现在有点不确定该课程的迁移内容.我可以使用推荐信吗?Rails会将什么作为列名寻找:main_bar?我可以这样做吗?

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
Run Code Online (Sandbox Code Playgroud)

谢谢!

Jai*_*yer 7

您不会在表中添加"has_one"关系.foreign_key进入另一个表.在上面的示例中,您需要向bars表中添加外键.

在迁移中,您可以使用:

t.references :foo
Run Code Online (Sandbox Code Playgroud)

要么:

t.integer :foo_id
Run Code Online (Sandbox Code Playgroud)

任何一个都可以工作.