【问题标题】:Multiple Table Inheritance in Rails 4/Devise setting the current_userRails 4中的多表继承/设计设置current_user
【发布时间】:2015-04-07 20:40:08
【问题描述】:

所以我决定为我的应用程序的不同用户使用 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 User1 < ActiveRecord::Base
  has_one :user, :as => :rolable
end

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

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

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

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

最好的方法是什么? (我不是最有经验的 Rails 开发人员)

【问题讨论】:

    标签: ruby-on-rails devise multiple-inheritance


    【解决方案1】:

    对于我的项目,我没有从 Devise 的 current_user 实例中更改 current_user。相反,我在需要时为每个用户创建了新对象,并使用 current_user 的 id 字段作为特定用户的外键。更改 current_user 可能不是最好的主意,因为那时我失去了对 User 表的引用和该表中的信息。为每个用户创建一个对象效果很好

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-10
      • 2014-06-23
      • 2013-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多