3

2 つの User オブジェクトがありますexisting_user, current_user。どのようにトラバースしてUser.attributes.keys、それらが等しいかを確認する必要がありますか。

4

2 に答える 2

3

おそらく次のようなものです:

class User < ActiveRecord::Base

  # ...

  # untested, but the logic seems sound.
  def equals?(user)
    User.attributes.keys.each do |k|          
      return false unless self[k] == user[k]
    end
    true
  end

end

その後、 を呼び出すことができますcurrent_user.equals?(existing_user)

于 2012-09-18T06:20:23.847 に答える
0

この質問の背景は、私には完全には明らかではありません。通常、current_userあなたのように言及する場合、背景は件名に記載されているルビーのようなものだけでなく、ルビー オン レールです。外部のログイン プロセス (cas、facebook など) を介して取得していると思いますが、追加の属性用のユーザー テーブルを内部的に保持しています。current_user

私の仮定が正しいとすれば、外部ユーザーモデルの一意の属性を 1 つ特定し、それを内部ユーザーテーブルに保存することをお勧めします。この属性の一意性を検証したい場合があります。比較を行うときは、外部からログインしたユーザーと内部で保持されているユーザーのこの 1 つの属性を比較することに限定してください。

于 2012-09-18T07:03:02.393 に答える