繁体   English   中英

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

[英]Multiple Table Inheritance in Rails 4/Devise setting the current_user

因此,我决定为我的应用程序的不同用户使用MTI。 用户对于我不应该使用STI的信息有足够不同的信息,我希望它在以后的工作中更加强大。 我有一个使用dev内置在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开发人员)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM