嘿所有我正在尝试为今天早上创建的多态关联编写迁移。
在为名为management_type
的成员表创建新列时,因为成员已经属于管理层,我免费management_id
。我将has_many :members, :as => :management
添加到具有成员
这允许我向AlphaManagement
和BravoManagement
添加成员,但仅添加AlphaManagement
的所有现有成员,因为我刚刚添加了BravoManagemnent
。因此所有现有成员的management_type都具有空值。我想创建一个将遍历每个元组的迁移,然后将AlphaManagement
关联添加到management_type列,但仅限于其为null。因此,在以后的迁移中,我不会将它们全部更改为AlphaManagement
我知道我可以做这样的事情来设置默认的
create_table :products do |t|
t.references :attachment, :polymorphic => {:default => 'Photo'}
end
但如果我已经创建了表格,我怎样才能通过迁移为关联设置默认值?
编辑 - 这样你就可以看到我做了什么
1.migration
class AddingManagementTypeToMembers < ActiveRecord::Migration
def up
add_column :members, :management_type, :string
end
def down
remove_column :members, :management_type
end
end
将belongs_to :management, :polymorphic => true
添加到成员类。注意经理董事和高管都继承自会员。
运行管理方式已发生变化但我们希望保留旧版报告,因此我们需要旧管理模式和新管理模式。所以我添加了has_many :members, :as => :management
运行迁移。现在,将成员添加到Alpha
或Bravo
管理层就像bravo_management.members.new(:name =&gt;'rob')
答案 0 :(得分:1)
我之前遇到过同样的问题。您只想使用
回滚特定的迁移 rake db:migrate:down VERSION=1234123412341234
作为answered here,但请注意,这不是该特定问题的可接受答案,即使它可能有很大意义。