我正在使用rails中的应用程序,我需要创建多种类型的用户。我正在使用Devise gem进行身份验证。现在让我概述一下我想要实现的目标,并且过去整整一周都不能。
首先,我想要两种类型的用户。让我们称他们为客户端和开发人员,如下所示。
class Client < ActiveRecord::Base
end
class Developer < ActiveRecord::Base
end
现在,这两个用户之间存在多对多的关系。客户可以拥有许多开发人员,开发人员也可以为许多客户工作。所以,为此,我们还需要一个中间表。我们称之为client_developer_join。
所以,让我们相应地更新我们的模型。
class Client < ActiveRecord::Base
has_many :developers, through: :client_developer_joins, dependent: :nullify
has_many :client_developer_joins, dependent: :destroy
end
class Developer < ActiveRecord::Base
has_many :clients, through: :client_developer_joins, dependent: :nullify
has_many :client_developer_joins, dependent: :destroy
end
class ClientDeveloperJoin < ActiveRecord::Base
belongs_to :client
belongs_to :developer
end
重要的:
现在,我想要的是,当用户注册时,他将能够选择是使用无线电按钮还是其他一些好看的东西注册为客户端或开发人员。还有第三个选项名为“Both”。在这种情况下,用户可以随时选择从客户端切换到开发人员,反之亦然。
如果不为每种类型的用户创建多个注册和登录表单,并且让他们能够切换,我怎么才能实现。
我已经研究过STI(单表继承)和StackoverFlow上与此相关的所有问题,但无法解决问题。
我认为理想但不知道如何实现的一个解决方案是为每种类型的用户设置单独的设计模型,但这将创建不同的注册和登录表单。我不希望这样,它也不会让我能够从一种类型切换到另一种类型。