Ruby on rails 具有不同用户类型的Ruby on rails

Ruby on rails 具有不同用户类型的Ruby on rails,ruby-on-rails,polymorphic-associations,Ruby On Rails,Polymorphic Associations,我正在尝试构建一个具有不同类型用户的应用程序,我正在使用authlogic进行用户身份验证 因此,我有一个用户模型,它具有authlogic发挥其魔力所需的字段。现在我想添加两个不同的模型来描述不同类型用户的额外字段 假设一个用户注册后,他会选择他的用户类型,注册完成后,他将能够添加特定于他的用户模型的信息 最好的方法是什么?我目前正在研究多态模型,但我不确定这是最好的选择。任何帮助都将不胜感激,谢谢 您可以创建不同的配置文件表格,并将配置文件绑定到用户。因此,对于每种用户类型,您都可以创建一个

我正在尝试构建一个具有不同类型用户的应用程序,我正在使用authlogic进行用户身份验证

因此,我有一个用户模型,它具有authlogic发挥其魔力所需的字段。现在我想添加两个不同的模型来描述不同类型用户的额外字段

假设一个用户注册后,他会选择他的用户类型,注册完成后,他将能够添加特定于他的用户模型的信息


最好的方法是什么?我目前正在研究多态模型,但我不确定这是最好的选择。任何帮助都将不胜感激,谢谢

您可以创建不同的
配置文件
表格,并将配置文件绑定到用户。因此,对于每种用户类型,您都可以创建一个表,并在其中存储特定信息,并有一个
user\u 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

对于用户类型,还有第三个选项STI(单表继承)。但是,如果用户类型字段差别很大,那么这种方法就不能很好地扩展。

您可以创建不同的
profile
表,然后将profile绑定到用户。因此,对于每种用户类型,您都可以创建一个表,并在其中存储特定信息,并有一个
user\u 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

对于用户类型,还有第三个选项STI(单表继承)。但是,如果用户类型字段差别很大,那么这种方法就不能很好地扩展。

这是我在这里看到的最好的方法
我在这里看到的最佳方法

谢谢,这与我对多态性所做的差不多,它似乎可以正常工作,但问题是我一辈子都不知道如何处理用户选择其用户类型的下拉列表,我如何将其链接以使模型正常工作?这是一个完全不同的问题:)但我会在控制器中手动执行。使用可用类型创建一个
select_tag
,然后在create/update方法中检查参数,使用适当的类型创建/更新并保存。非常感谢,我认为这是一种方法,但后来我认为可能有一种很好的“railsy”方法来做这件事。heheThanks非常感谢这个答案。尽管我有一个问题,例如,如果一个类型为1的用户可以升级到类型2,并且可以降级回类型1,那么如何处理这个问题呢?目前,我已决定在类型1中保留填充有用户信息的行,而用户在类型2中处于活动状态,因此当用户返回/降级到类型1时,他不必重新键入信息。这是正确的吗?汉克斯,这几乎就是我对多态性所做的,它似乎很有效,但问题是,我一辈子都搞不清楚如何处理用户选择其用户类型的下拉列表,我如何将其链接以使模型正常工作?这是一个完全不同的问题:)但我会在控制器中手动执行。使用可用类型创建一个
select_tag
,然后在create/update方法中检查参数,使用适当的类型创建/更新并保存。非常感谢,我认为这是一种方法,但后来我认为可能有一种很好的“railsy”方法来做这件事。heheThanks非常感谢这个答案。尽管我有一个问题,例如,如果一个类型为1的用户可以升级到类型2,并且可以降级回类型1,那么如何处理这个问题呢?目前,我已决定在类型1中保留填充有用户信息的行,而用户在类型2中处于活动状态,因此当用户返回/降级到类型1时,他不必重新键入信息。这样做对吗