是否属于许多合适的

时间:2011-06-08 12:10:23

标签: ruby-on-rails devise cancan

对本网站不熟悉,期待更多参与:)

我正在使用rails3,devise,cancan等创建客户订购系统。

简而言之,我们有三种模式:

  1. 用户
  2. 公司
  3. 订单
  4. 我很难理解这些关系。最初用户有很多公司,公司属于用户。

    但是,我们实际上有两种用户:

    1. 这里的管理员可以创建公司,更新详细信息等。
    2. 我们的客户只能登录并查看他们的公司和相关订单。
    3. 我考虑过创建两个控制器 - 管理员和用户,但这似乎是不必要的,而不是很好的。加康康可以做我认为的所有事情。

      您认为我们应该在这做什么?我们正在考虑使用has_and_belongs_to_many关系,但网上的大多数人似乎都说要避免它。

      谢谢,

      珍妮

      ---编辑---

      感谢所有帮助过的人!

      经过一些阅读,我决定使用很多通过关联。

      我创建了一个名为agreement的新模型,并将我的模型设置如下:

      class User < ActiveRecord::Base
        has_many :agreements
        has_many :companies, :through => :agreements
      end
      
      
      class Company < ActiveRecord::Base
        has_many :agreements
        has_many :users, :through => :agreements
      end
      

      我有点陷入困境,无法在网上找到一个好的例子。

      我应该单独创建一个用户和公司,然后创建一个协议来匹配这两个用户和公司吗?

      再次感谢帮助All。

3 个答案:

答案 0 :(得分:1)

鉴于描述听起来像你有:

  1. 用户
  2. 客户
  3. 公司
  4. 订单
  5. 管理员是具有允许他们访问公司创建,更新的角色的用户。客户属于公司,也可能是“用户”,具体取决于您在用户模型中存储的信息。

    至于HABTM,如果你没有在连接表中添加额外的数据,它仍然可以使用。通常,虽然您在连接表中会有一些信息,因为它为连接提供了额外的上下文。

    示例数据模型的一个很好的资源,并提供有关实体和关系的一些想法是Library of Free Data Models

答案 1 :(得分:0)

你可以使用has_many:through。因为看起来应用程序肯定需要在未来的某些方面进行一些持续的改变。所以在这种情况下它会有所帮助 如果有任何疑问,请回复

感谢名单

答案 2 :(得分:0)

首先,您需要了解您真正想要实现的目标,了解关系以及关系需要的样子。在纸上绘制一些实体关系模型,这有帮助。

就个人而言,我更喜欢使用has_many:through,因为如果您需要存储该关系的其他数据(在扩展您的应用时可能就是这种情况),您已经设置好了,不需要迁移您的表和模型从habtm到has_many:通过。

对于用户权限,请坚持使用cancan。