Ruby on rails 用于管理一组数据的多个设计登录的Rails设计模式 编辑:执行以下操作的应用程序的设计模式是什么:企业使用该应用程序设置帐户。然后,企业会在应用程序中创建“员工”,这些员工可以单独登录并对企业数据进行CRUD,但他们的雇主标记为禁止登录的内容除外?

Ruby on rails 用于管理一组数据的多个设计登录的Rails设计模式 编辑:执行以下操作的应用程序的设计模式是什么:企业使用该应用程序设置帐户。然后,企业会在应用程序中创建“员工”,这些员工可以单独登录并对企业数据进行CRUD,但他们的雇主标记为禁止登录的内容除外?,ruby-on-rails,devise,Ruby On Rails,Devise,我在hotel应用程序上遇到了问题。我们开始: 我的应用程序,一个旅馆管理SaaS,有很多用户。这些是旅馆。旅馆的主人通过Desive注册了我的应用程序当前用户始终是旅馆本身 旅馆有许多客人,每个客人都属于一个使用者(旅馆)。这些人打电话/发电子邮件,想在旅馆过夜。非常感谢大家帮我做这件事 现在一切都很好。通常情况下,旅馆老板或经理会登录我的应用程序,预订房间,给客人发电子邮件,发送发票,上传财务信息,等等。然而,许多人一直要求能够添加员工,这些员工可以单独登录、创建预订、发送电子邮件等,但不能

我在hotel应用程序上遇到了问题。我们开始:

我的应用程序,一个旅馆管理SaaS,有很多用户。这些是旅馆。旅馆的主人通过Desive注册了我的应用程序<代码>当前用户始终是旅馆本身

旅馆有许多客人,每个客人都属于一个使用者(旅馆)。这些人打电话/发电子邮件,想在旅馆过夜。非常感谢大家帮我做这件事

现在一切都很好。通常情况下,旅馆老板或经理会登录我的应用程序,预订房间,给客人发电子邮件,发送发票,上传财务信息,等等。然而,许多人一直要求能够添加员工,这些员工可以单独登录、创建预订、发送电子邮件等,但不能查看财务信息。进入

这就是我被困的地方。委派能力和授权很容易。Deave还使我能够建立多个Deave模型。然而,我一直在思考如何让员工在登录后访问其雇主的数据。
当前_user.id
将与他们的雇主id(注册的企业)不同,因此我如何告诉Deave使用他们用户的id

class User
  has_many :employees
end

#should I do something like this?
class Employee
  belongs_to :user

  has_many :guests, :through => users
  has_many :reservations, :through => users
  has_many :rooms, :through => users
end
我想做下面这样的事情:

current_user.id=current_employee.user.id

唯一的问题是,它有气味。一定有更好的办法。一旦员工登录,一切都将与他们的老板登录时一模一样(显示所有预订、所有客人、所有电子邮件等),员工只会被限制在某些区域

主要是解决办法和黑客。看起来方向是对的,但这对我来说太过分了。对于这种情况,必须有一个特定的设计模式,但我似乎找不到它,甚至无法在谷歌上找到正确的方向

基本上,Rails应用程序如何让用户能够创建子用户,并允许这些子用户在有限制的情况下查看用户的数据


非常感谢您能帮助我理清思路。

简单地覆盖当前用户的
方法有什么问题吗

class ApplicationController
  def current_user
    super || current_employee&.user # safe operator for ruby 2.3+, otherwise `current_employee.try(:user)`
  end
end

不确定这是否完美,但你有没有探索过
设计组
?我的想法是,这不应该是一个黑客,我只是错过了一些显而易见的东西。其他Rails SaaS应用程序如何让其用户创建可以访问用户数据的子用户?我认为理想情况下,用户组与其用户之间应该有区别,并且用户应该有角色(所有者、员工等)。该组可能属于作为所有者的其中一个用户,其余用户属于该组,但他们都是用户。当前用户将普遍应用,并且每个用户都将响应user.group,无论他们是所有者还是成员。让组和所有者成为同一个对象可能会使情况变得复杂@PatrickJones这样的情况怎么样:员工通过用户拥有多个来宾?按照您的组想法,您如何确保创建新来宾记录的员工将所述对象保存到组,所有内容都基于组id而不是当前的用户id?员工没有客人、床位、预订等,只有企业(集团)有。