Rails 中的多个 Table 继承 4/设计设置 current_user

Multiple Table Inheritance in Rails 4/Devise setting the current_user

所以我决定为我的应用程序的不同用户使用 MTI。用户对我认为不应该使用 STI 的地方有足够的不同信息,我希望它在未来更强大。我有一个内置于 rails 4 的应用程序,它使用为用户提供多态关联的设计,像这样

class User < ActiveRecord::Base

  belongs_to :rolable, :polymorphic => true

  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable

  devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable, :confirmable, :timeoutable
end 

其他 class 看起来像

class User1 < ActiveRecord::Base
  has_one :user, :as => :rolable
end

一切都很好,但我想问的是如何将设备的 "current_user" 设置为 User1 的实例?这是可能的还是推荐的?我可以创建一个新的 User1 并更新用户的 :rolable 属性以在控制台中包含对特定 User1 的引用,但我不确定将其放在我的代码中的何处。

我希望所有用户的登录信息都相同,但我希望用户能够在登录时更改用户特定信息。我在想我会修改用户控制器以在创建时添加 User1 模型,然后在应用程序控制器中我会将 current_user 设置为 User1 的实例。

这是建议还是有更好的方法来制作 current_user?

我的第二个想法是设置另一个变量并使用用户 class 中的列获取类型。 (rolable_id 和 rolable_type)

哪种方法最好? (我不是最有经验的Rails开发者)

对于我的项目,我没有更改 Devise 的 current_user 实例中的 current_user。相反,我在需要时为每个用户创建了新对象,并使用 current_user 的 id 字段作为特定用户的外键。更改 current_user 可能不是最好的主意,因为这样我就失去了对用户 table 的引用以及 table 中的信息。为每个 User

创建一个对象效果很好