0

デバイスでのログイン中に現在の URL を確認する方法があるかどうか疑問に思っていました。

:url フィールドを持つユーザー モデルがあり、:email と :password と共に、現在の URL がユーザーの :url フィールドと一致するかどうかも確認するとします。

私はdeviseのself.find_for_database_authenticationメソッドでこれを行うべきだと考えていましたが、現在これを持っています:

def self.find_for_database_authentication(warden_conditions)
    conditions = warden_conditions.dup
    if login = conditions.delete(:login).downcase
      where(conditions).where('$or' => [{:username => /^#{Regexp.escape(login)}$/i}, {:email => /^#{Regexp.escape(login)}$/i}]).first
    else
      where(conditions).first
    end
  end

しかし、現在の URL をチェックするには何を追加すればよいでしょうか?

注:モンゴイドを使用しています

前もって感謝します!

4

1 に答える 1

0

次のように、URLをクエリに追加するだけです。

def self.find_for_database_authentication(warden_conditions)
  conditions = warden_conditions.dup
  login = conditions.delete(:login).downcase
  url   = conditions.delete(:url  ).downcase

  if login && url
    where(conditions).where(
      :url => {"$eq" => url},
      '$or' => [
        {:username => /^#{Regexp.escape(login)}$/i},
        {:email    => /^#{Regexp.escape(login)}$/i}
      ]
    ).first
  else
    where(conditions).first
  end
end

ハッシュが暗黙の「and」のようなものである場合

于 2013-02-19T07:02:55.637 に答える