我的应用有用户。这些用户属于一个或多个组。显然,组可以有很多用户。
我如何在Rails中执行此操作? 这是一个有多少或有很多通过联想?第三个模型的名称是什么,如果它有很多通过"?似乎没有任何意义。或者只是" group-user-link"?
如果我在相应的表中有user_id和group_id,那么当用户有多个组时会发生什么?
答案 0 :(得分:0)
是的,有办法。如果你想拥有多对多的关系,你只需要一个连接表。比如说,您的用户migh属于许多组,并且组可能属于许多用户。
所以你可以像这样定义一个连接表:
rails g model user_group user_id:integer:index group_id:integer:index
这将为您和模型user_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
这就是你如何实现理想的关系。