解決しました!問題は実際にはacts_as_tggable_on gemにありました。session["devise.user_attributes"]すべての属性が含まれているためUser、私の場合の「スキル」または「興味」のように、「acts_as_taggable」のいずれかに到達すると、宝石の魔法がそれをマルチパラメーターまたはネストされたパラメーター属性に変換し、レールが試行するように見えます値をループする - 私の場合は nil です。したがって、"skills"=>nil存在する場合、undefined method each for nilエラーが発生します。
問題がどこにあるかを確認するために宝石のソースをまだ詳しく調べていませんが、レールのエラーはhttps://github.com/rails/rails/blobの25行目または27行目から来ていると思います/master/activerecord/lib/active_record/attribute_assignment.rb .
簡単な解決策はsession["devise.user_attributes"].delete_if { |k,v| v.blank? }、私のnew_with_session方法に追加することでした。
def self.new_with_session(params, session)
if session["devise.user_attributes"]
session = session["devise.user_attributes"].delete_if { |k,v| v.blank? }
new(session, without_protection: true) do |user|
user.attributes = params
user.valid?
end
else
super
end
end