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>
ありがとう、どんな助けでも大歓迎です!