我想建立一个具有不同类型的用户的应用程序,我使用authlogic进行用户认证。

所以我有一个具有所需的字段authlogic做它的魔力一个用户模型。我现在想添加一些不同的车型,将描述额外的领域为不同类型的用户的。

可以说,一个用户注册,他会再选择自己的用户类型,当他完成注册,他将能够添加的特定于他的用户模型信息。

什么是做到这一点的最好方法是什么?我目前正在研究多态模型,但我不知道这是采取的最佳路线。任何帮助将不胜感激,谢谢。

有帮助吗?

解决方案

您可以创建不同的profile表,只是配合轮廓给用户。因此,对于每一个用户类型,你可以创建一个表和存储的具体信息那里有user_id列点回users

class User < ActiveRecord::Base
  has_one :type_1
  has_one :type_2
end

class Type1 < ActiveRecord::Base
  belongs_to :user
end

class Type2 < ActiveRecord::Base
  belongs_to :user
end

现在这不是很干,可能会导致问题,如果你不断地增加用户的类型。所以,你可以看看多态性。

有关的多态性,所述users表将定义什么键入的用户是(profileable_idprofileable_type)。因此,像这样:

class User < ActiveRecord::Base
  belongs_to :profileable, :polymorphic => true
end

class Type1 < ActiveRecord::Base
  has_one :user, :as => :profileable
end

class Type2 < ActiveRecord::Base
  has_one :user, :as => :profileable
end

然后有STI的用户类型的第三选项(单表继承)。但是,如果用户类型字段显着不同的是不能很好地扩展。

其他提示

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top