2 つの User オブジェクトがありますexisting_user, current_user
。どのようにトラバースしてUser.attributes.keys
、それらが等しいかを確認する必要がありますか。
3407 次
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 に答える