用户属于组织,只能查看/编辑其公司Ruby on Rails添加的项目

时间:2019-01-23 12:44:23

标签: ruby-on-rails ruby devise

试图找出将用户组织到组织中的最佳方法,以便每个组织的成员仅看到他们自己和组织中其他人添加的项目。所有用户都需要使用共享登录名。

我以前在Devise上有过一些经验,因此希望尽可能使用它。

解决此问题的最佳方法是什么?

任何解释这些的教程链接都很好。

谢谢

1 个答案:

答案 0 :(得分:0)

假设您的用户模型属于某个公司:

void main() => runApp(_widgetForRoute(window.defaultRouteName));

Widget _widgetForRoute(String route) {
  return MediaQuery(
    data: MediaQueryData.fromWindow(window),
    child: Directionality(
      textDirection: TextDirection.ltr,
      child: Material(
        child: ListView.builder(
          itemBuilder: (context, index) => Text("index $index"),
          itemCount: 100,
        ),
      ),
    ),
  );
}

公司模型拥有许多用户并拥有许多产品(项目):

class User < ActiveRecord
  belongs_to :company
  ....
end

属于公司的产品型号:

class Company < ActiveRecord
  has_many :users
  has_many :products
end

对于您来说,您要实现的目标是用户只能查看/编辑其公司的产品。在控制器中使用before_action,您可以定义用户可以/不能执行的操作。这是基本示例:

class Product < ActiveRecord
  belongs_to :company
  ....
end

这样,每当用户尝试访问不属于其公司的产品时,您都会引发错误。

当然,这只是一个基本示例,您应该看一下功能非常强大的Pundit gem,但您应该明白这一点:)

让我知道我是否错过了什么。

欢呼