Ich habe eine Rails 4.0.13 App mit Devise 3.5.10. Mein User
Modell ist :omniauthable
mit einer verschachteltenauthentications
has_many
Beziehung, so dass der Benutzer durch mehrere Anbieter Omniauth:Starke Parameter für verschachtelte omniauth
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable, :confirmable,
:recoverable, :rememberable, :trackable,
:omniauthable, :omniauth_providers => Authentication.auth_methods
has_many :authentications, dependent: :destroy
accepts_nested_attributes_for :authentications
end
(ich dies vor einiger Zeit ursprünglich implementiert on Rails 3.2, so dass ich nicht daran erinnern, die genauen Änderungen, die ich machen musste, um das funktionieren zu lassen. Ich glaube nicht, dass es relevant ist, aber ich kann versuchen, es zu sehen, wenn es nötig ist.)
Dies bedeutet, dass ein Benutzer melden Sie sich mit Omniauth hat Parameter wie:
Parameters: {"utf8"=>"✓", "user"=>{
"authentications_attributes"=>
{"0"=>{"provider"=>"open_id",
"uid"=>"http://pretend.openid.example.com?id=12345",
"nickname"=>"http://pretend.openid.example.com"}},
"name"=>"Person1",
"email"=>"[email protected]", "password"=>"[FILTERED]",
"password_confirmation"=>"[FILTERED]"}, "commit"=>"Sign up"}
ich kann nicht herausfinden, wie stark Parameter zu erhalten, dies zu ermöglichen. Mein aktueller Versuch ist params.require(:user).permit(:name, :email, :password, :password_confirmation, authentications_attributes: {"0" => [:provider, :uid, :nickname]})
, aber das erzeugt immer noch ein Protokoll Unpermitted parameters: provider, uid, nickname
.
Wie kann ich diese Parameter zulassen?
D'oh! Ich war so auf die "0" fixiert, dass ich nicht darüber nachdachte, wie das mit "has_many" zu tun haben würde. Danke, das ist perfekt. – Chowlett