群组和用户有多个订单has_many通过?

时间:2014-11-24 15:28:13

标签: ruby-on-rails associations

我的应用有用户。这些用户属于一个或多个组。显然,组可以有很多用户。

我如何在Rails中执行此操作? 这是一个有多少或有很多通过联想?第三个模型的名称是什么,如果它有很多通过"?似乎没有任何意义。或者只是" group-user-link"?

如果我在相应的表中有user_id和group_id,那么当用户有多个组时会发生什么?

1 个答案:

答案 0 :(得分:0)

是的,有办法。如果你想拥有多对多的关系,你只需要一个连接表。比如说,您的用户migh属于许多组,并且组可能属于许多用户。

所以你可以像这样定义一个连接表:

rails g model user_group user_id:integer:index group_id:integer:index

这将为您和模型user_group.rb

生成一个迁移文件

运行迁移并将以下内容放在其他模型上:

group_group.rb

class UserGroup < ActiveRecord::Base
  belongs_to :user
  belongs_to :group
end

在您的用户模型中

  class User < ActiveRecord::Base
     has_many :user_groups
     has_many :groups, through: :user_groups
    ....
    end

所以在你的小组模型中

 class Group < ActiveRecord::Base
     has_many :user_groups
     has_many :users, through: :user_groups
    .....
    end

这就是你如何实现理想的关系。