У меня возникает проблема с аутентификацией Omniauth и Rails 4, в результате чего я получаю Rails ActiveModel :: ForbiddenAttributesError.Rails ActiveModel :: ForbiddenAttributesError Devise, Omniauth
Я использую gem 'protected_attributes'
, поэтому сильные параметры не должны быть проблемой.
Моя модель пользователя содержит следующее:
def self.from_omniauth(auth)
where(auth.slice(:provider, :uid)).first_or_create do |user|
user.username = auth.info.email
user.email = auth.info.email
user.password = Devise.friendly_token[0,20]
user.name = auth.info.name
end
end
user.password
находится там только для поддержания совместимости с существующей системой DEViSE AUTH.
Ошибка AR указывает, что эта строка: where(auth.slice(:provider, :uid)).first_or_create do |user|
выдает ошибку.
выше метод вызывается из:
class OmniauthCallbacksController < Devise::OmniauthCallbacksController
def mavenlink
@user = User.from_omniauth(request.env['omniauth.auth'])
service = @user.services.initialize_or_update_via_omniauth(request.env['omniauth.auth'])
if service && service.save
sign_in_and_redirect @user #this will throw if @user is not activated
set_flash_message(:notice, :success, :kind => "Mavenlink") if is_navigational_format?
else
redirect_to root_path, error: "Error signing in with Mavenlink credentials."
end
end
end
ли это связано или нет, я не уверен, но я также был запущен эту ошибку:
Не удалось найти действительный отображение для пути "/ auth/mavenlink/callback"
Возможно, не связано, но я думал, что включу его на всякий случай.
Любая помощь была бы принята с благодарностью!
Измените эту строку на 'where (provider: auth.provider, uid: auth.uid) .first_or_create do | user |'. Это должно делать свое дело. –
Это сделало трюк, спасибо! Почему это проблема? – Adam
Возможный дубликат [Rails 4.1.5 omniauth strong parameters] (http://stackoverflow.com/questions/25399414/rails-4-1-5-omniauth-strong-parameters) – zhurora