我为一个简单的用户模型进行了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
如何使用inheritence来避免复制所有迁移配置?
答案 0 :(得分: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