2

我有一个简单的用户模型的 Rails 迁移:

class Users < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :name, :default => :null
      t.float :weight
      t.datetime :recorded_at
      t.timestamps
    end
  end
end

我想为用户的历史记录第二张表。显然,它应该具有相同的列但有另一个名称。它还应该引用用户表。

require_relative '20130718143019_create_history.rb'    

class History < Users
  def change
    create_table :history do |t|
      t.references :user
      # ...?
    end
  end
end

如何使用继承来避免复制所有迁移配置?

4

1 回答 1

1

离开键盘后,西红柿从我的眼睛上掉了下来,很清楚我该如何设置:

class Users < ActiveRecord::Migration
  def change
    create_table :users do |t|
      prepare_columns(t)
    end
  end

  protected

  def prepare_columns(t)
    t.string :name, :default => :null
    t.float :weight
    t.datetime :recorded_at
    t.timestamps
  end

end

...

require_relative '20130718143019_create_history.rb'    

class History < Users
  def change
    create_table :history do |t|
      t.references :user
      prepare_columns(t)
    end
  end
end
于 2013-07-19T07:39:47.660 回答