如何比较ruby中的两个对象

时间:2012-09-18 06:11:14

标签: ruby-on-rails attributes

我有两个用户对象existing_user, current_user,我应该如何遍历User.attributes.keys并检查它们是否相等。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

这个问题的背景对我来说并不完全清楚。通常当一个人像你一样引用current_user时,背景是ruby-on-rails,而不仅仅是像主题中所述的红宝石。我,您通过外部登录进程(cas,facebook等)获取current_user,并在内部保留用户表以获取其他属性。

鉴于我的假设是正确的,我建议,识别外部用户模型的一个uniq属性并将其存储在内部用户表中。您可能希望验证此属性的唯一性。进行比较时,限制在外部登录用户和内部保留用户上比较此单个属性。