Ruby on rails Rails应用程序有3种不同类型的用户
我现在正处于应用程序的设计阶段。主要是在纸上做一些事情,了解应用程序模型,定义我需要什么,等等。我发现了一个问题,我不知道如何解决,或者更具体地说,我不知道如何实现它以保持干燥。这就是交易: 我有一个应用程序,其中将有三种不同类型的用户/帐户:Ruby on rails Rails应用程序有3种不同类型的用户,ruby-on-rails,ruby-on-rails-3,database-design,activerecord,models,Ruby On Rails,Ruby On Rails 3,Database Design,Activerecord,Models,我现在正处于应用程序的设计阶段。主要是在纸上做一些事情,了解应用程序模型,定义我需要什么,等等。我发现了一个问题,我不知道如何解决,或者更具体地说,我不知道如何实现它以保持干燥。这就是交易: 我有一个应用程序,其中将有三种不同类型的用户/帐户: 普通帐户-帐户具有基本配置文件和应用程序中的基本权限,具有普通帐户的用户可以查看每个人的公共配置文件,可以修改自己的配置文件,只能有一张配置文件图片,可以搜索等 高级帐户-具有高级配置文件,这意味着用户可以指定联系人信息、外观详细信息、预订页面、获取优惠
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
attr_accessible :email, :password, :password_confirmation, :remember_me, :account_type
has_one :account
has_one :entertainer
has_one :company
after_create :create_account
def create_account
if self.account_type == 'Advanced'
self.entertainer = AdvancedAccount.create(user_id: self.id)
elsif self.account_type = "Company"
self.company = CompanyAccount.create(user_id: self.id)
else
self.account = RegularAccount.create(user_id: self.id)
end
end
end
class用户
还是我走错了路?这方面的最佳做法是什么?
谢谢你的建议 我会在UsersController中使用一些方法来定义各种访问级别,例如:
@user=高级吗?
通过这种方式,您可以允许他们选择他们将拥有的帐户类型,并将该选择存储在数据库中[users::account\u type:integer]
。如果您决定添加该功能,这将允许您在将来更改它们
我不会在你的Users类中创建这么多关联,因为它会增加你的RESTfull路由等,并使调试成为一场噩梦。我发现gem对于管理用户能力和授权非常有用,而不是为不同类型的用户管理不同的模型。我过去用Desive设置它,但现在可能已经相当过时了。我建议您检查一下cancan:是一种优雅的方式,可以以一种非常枯燥的方式管理授权。是的,我知道,我对此很感兴趣,那么你的意思是最好的方式是使用单帐户模式,然后使用cancan来授权用户?是的,你可以这样做,只需定义不同的角色,就像你的案例中的“高级、公司、通用”一样。那么你认为我应该使用单帐户模式,只需使用cancan进行授权吗?