Ruby on rails 4 使用多个用户名设计3.4.1,并重置密码禁止属性错误

Ruby on rails 4 使用多个用户名设计3.4.1,并重置密码禁止属性错误,ruby-on-rails-4,devise,Ruby On Rails 4,Devise,我的用户模型中有多个可能的用户名,即用户可以使用其中一个登录。 这是基于以下文章: 实际登录使用这两种代码都可以正常工作,但按照示例,我无法正确启动重置密码页面 这是一个多租户场景,因此还需要考虑一个帐户id。 我发现许多其他人也有同样的问题——但如果我允许的话,我不知道解决这个问题的正确方法是什么!在下面的相关方法中,然后重置密码功能,但标准登录不再起作用 我收到一个禁止的属性错误,如下所示: ActiveModel::ForbiddenAttributesError - ActiveMo

我的用户模型中有多个可能的用户名,即用户可以使用其中一个登录。 这是基于以下文章:

实际登录使用这两种代码都可以正常工作,但按照示例,我无法正确启动重置密码页面

这是一个多租户场景,因此还需要考虑一个帐户id。 我发现许多其他人也有同样的问题——但如果我允许的话,我不知道解决这个问题的正确方法是什么!在下面的相关方法中,然后重置密码功能,但标准登录不再起作用

我收到一个禁止的属性错误,如下所示:

  ActiveModel::ForbiddenAttributesError - ActiveModel::ForbiddenAttributesError:
  activemodel (4.1.6) lib/active_model/forbidden_attributes_protection.rb:21:in `sanitize_for_mass_assignment'
  activerecord (4.1.6) lib/active_record/relation/query_methods.rb:568:in `where!'
  activerecord (4.1.6) lib/active_record/relation/query_methods.rb:559:in `where'
  activerecord (4.1.6) lib/active_record/querying.rb:10:in `where'
  app/models/user.rb:356:in `find_first_by_auth_conditions'
  devise (3.4.1) lib/devise/models/authenticatable.rb:266:in `find_or_initialize_with_errors'
  devise (3.4.1) lib/devise/models/recoverable.rb:115:in `send_reset_password_instructions'
  devise (3.4.1) app/controllers/devise/passwords_controller.rb:13:in `create'
User.rb

 devise :database_authenticatable, :recoverable, :rememberable, :trackable, authentication_keys: [:login, :account_id], reset_password_keys: [:login, :account_id]

....

  def self.find_first_by_auth_conditions(warden_conditions)

    # IF i switch these 2 lines then reset password works BUT normal login doesn't
    #conditions = warden_conditions.dup.permit!
    conditions = warden_conditions.dup

    if login = conditions.delete(:login)
      where(conditions).where(["lower(remote_id) = :value OR lower(other_id) = :value", { :value => login.downcase }]).first
    else
      where(conditions).first
    end
  end
应用程序\u controller.rb

before_action :configure_permitted_parameters, if: :devise_controller?

...

def configure_permitted_parameters
  devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:remote_id, :email, :password, :password_confirmation, :remember_me) }
  devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:login, :remote_id, :email, :password, :remember_me) }
  devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:remote_id, :email, :password, :password_confirmation, :current_password) }
end
使用Desive 3.4.1,rails 4.1.6