Rails中的多表继承4 /设置current_user

时间:2015-04-07 20:40:08

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

所以我决定将MTI用于我应用的不同用户。用户有足够的信息,我不认为我应该使用STI,我希望它在未来更加强大。我有一个使用devise构建的应用程序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开发人员)

1 个答案:

答案 0 :(得分:0)

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

创建一个对象工作得很好