代码之家  ›  专栏  ›  技术社区  ›  Stewart Johnson

如果我使用:class_name属性使have_one,那么在迁移过程中应该放些什么?

  •  6
  • Stewart Johnson  · 技术社区  · 14 年前

    我的rails应用程序中有一个模型使用 :class_name 属性 has_one :

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

    我现在有点不确定该在这个类的迁移中放入什么。我可以用推荐信吗?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
    

    谢谢!

    1 回复  |  直到 14 年前
        1
  •  7
  •   Jaime Bellmyer    14 年前

    你不会把任何东西放在有“一对一”关系的桌子上。外键在另一张桌子上。在上面的例子中,您需要在 bars 表。

    在迁移过程中,可以使用:

    t.references :foo
    

    或:

    t.integer :foo_id
    

    两个都可以。