【发布时间】:2013-04-11 14:49:18
【问题描述】:
我有一个迁移,它使用 ActiveRecord concat 方法将一个对象添加到另一个对象的 has_many 关系。自创建迁移以来,我已向包含验证的父模型添加了一个新属性。
不幸的是,早期的迁移被破坏了,因为 concat 试图保存父对象,并且验证找不到关联的属性(它还不存在)。我是不是数据迁移不正确?
这里是迁移:
class RemoveTransportKeyFromInvites < ActiveRecord::Migration
def up
Invite.find_each do |invite|
transport_key = Invite.where(id: invite.id).pluck(:transport_key).first
guest_user = GuestUser.first_or_create!(transport_key: transport_key)
guest_user.invites << invite
end
remove_column :invites, :transport_key
end
def down
add_column :invites, :transport_key, :string
end
end
还有模特:
class Invite < ActiveRecord::Base
# some code omitted
validates_presence_of :inviter_email
# rest of code omitted
导致此错误的原因:
undefined method `inviter_email' for #<InviteToMeal:0x007f8ece07c060>
谢谢,任何帮助将不胜感激!
【问题讨论】:
-
Invite.column_names 的发布输出
标签: ruby-on-rails ruby rails-migrations