Ruby on rails 3 删除两个关联Mongoid模型中的冗余字段

Ruby on rails 3 删除两个关联Mongoid模型中的冗余字段,ruby-on-rails-3,class,mongoid,omniauth,Ruby On Rails 3,Class,Mongoid,Omniauth,在我基于omniauth和omniauth-identity的应用程序中,我遇到了以下问题: 有三个表管理用户数据: # Stores User data _not_ authentication data class User include Mongoid::Document has_many :identities field :email, type: String end # Stores Authentication data (i.e. Facebook) clas

在我基于
omniauth
omniauth-identity
的应用程序中,我遇到了以下问题:

有三个表管理用户数据:

# Stores User data _not_ authentication data
class User
  include Mongoid::Document

  has_many :identities
  field :email, type: String
end

# Stores Authentication data (i.e. Facebook)
class Identity
  include Mongoid::Document

  belongs_to :user
end

# Stores Authentication data for omniauth-identity
class LocalIdentity < Identity
  include OmniAuth::Identity::Models::Mongoid

  field :email, type: String
end
#存储用户数据_非u认证数据
类用户
include Mongoid::Document
有很多:身份
字段:电子邮件,类型:字符串
结束
#存储身份验证数据(即Facebook)
类标识
include Mongoid::Document
属于:用户
结束
#存储omniauth标识的身份验证数据
类的局部性
现在的问题是,我在
LocalIdentity
中复制了电子邮件字段。因此,每当用户在
user
模型中更改其电子邮件地址时,我都需要同步电子邮件地址。起初这看起来很琐碎,但一旦涉及到更多领域,就会变得非常混乱

所以我的问题是:有没有办法消除
用户
本地身份
之间的冗余

在思考解决方案时,我得出以下结论:

  • 不支持多重继承,因此
    LocalIdentity
    将不起作用
  • 在每个
    用户中嵌入
    本地身份
    ,以及 通过值写入将不起作用b/c验证将不起作用

您是否尝试使用
委派:电子邮件,:to=>:user
委派字段,而不是在
本地身份中委派自己的字段
?我会尝试,不知道委派存在