Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 4/Devise中的多表继承设置当前用户_Ruby On Rails_Devise_Multiple Inheritance - Fatal编程技术网

Ruby on rails Rails 4/Devise中的多表继承设置当前用户

Ruby on rails Rails 4/Devise中的多表继承设置当前用户,ruby-on-rails,devise,multiple-inheritance,Ruby On Rails,Devise,Multiple Inheritance,所以我决定对我的应用程序的不同用户使用MTI。用户有足够多的不同信息,我认为我不应该使用STI,我希望它在未来更加健壮。我有一个应用程序内置在rails 4中,使用Desive为用户提供多态关联,如下所示 class User < ActiveRecord::Base belongs_to :rolable, :polymorphic => true # Include default devise modules. Others available are: # :

所以我决定对我的应用程序的不同用户使用MTI。用户有足够多的不同信息,我认为我不应该使用STI,我希望它在未来更加健壮。我有一个应用程序内置在rails 4中,使用Desive为用户提供多态关联,如下所示

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用户true
#包括默认设计模块。其他可供选择的项目包括:
#:可确认、:可锁定、:超时和:全授权
设计:数据库可验证,可注册,
:可恢复,:可记忆,:可跟踪,:可验证,:可确认,:可超时
结束
其他的课程看起来像

class User1 < ActiveRecord::Base
  has_one :user, :as => :rolable
end
classuser1:rolable
结束
这一切都很好,但我想问的是如何将设备的“当前用户”设置为User1的实例?这是可能的还是建议的?我可以创建一个新的User1并更新用户的:rolable属性,以便在控制台中包含对特定User1的引用,但我不确定在代码中应该放在哪里

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

是否建议这样做,或者是否有更好的方法让当前的用户

我的第二个想法是设置另一个变量,并使用User类中的列获取类型。(可滚动标识和可滚动类型)


哪种方式最好?(我不是最有经验的Rails开发人员)

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