Rails层次关系建模用户设计

时间:2014-02-21 18:01:26

标签: ruby-on-rails ruby ruby-on-rails-3 devise

我有这3个型号:

class UsuarioComun < ActiveRecord::Base
belongs_to :usuario
end

class Operador < ActiveRecord::Base
belongs_to :usuario
end

class Usuario < ActiveRecord::Base

devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable

has_one :usuario_comun
has_one :operador       
end

所以我希望在UsuarioComun的注册中分别创建一个usuario和UsuarioComun,但我不能用它设计它只创建一个usuario,我怎么能解决这个问题?

1 个答案:

答案 0 :(得分:0)

为避免混淆,您的UsuarioComun模型似乎基本上是Profile模型(存储身份验证过程中不需要的额外用户数据(个人资料图片,生日,姓名等)


配置文件

我们在大多数应用中实现了这一点:

#app/models/usuario.rb
Class Usuario < ActiveRecord::Base
    has_one :usuario_comun
    before_create :build_usuario_comun
end

#app/models/usuario_comun.rb
Class UsuarioComun < ActiveRecord::Base
    belongs_to :user
end

users
id | email | password | etc

usuario
id | user_id | name | birthday | etc

这会在usuario_comun模型中构建一个新的关联记录,这基本上意味着除了保存的user_id列之外它是空白的

希望这有帮助吗?