2014-11-24 79 views
0

我的應用有用戶。這些用戶屬於一個或多個組。顯然,組可以有很多用戶。羣組和用戶有很多oder有很多通過?

我如何在Rails中做到這一點? 這是一個有很多或有很多通過關聯?第三種模式的名稱是什麼,如果它「有許多通過」?沒有什麼似乎是有道理的。或者它只是像「組用戶鏈接」?

如果我在相應的表中有user_id和group_id,當用戶有多個組時會發生什麼?

回答

0

是的,有一種方法。如果你想擁有多對多的關係,你只需要一個連接表。假設您的用戶羣屬於多個羣組,並且羣組可能屬於多個用戶。

所以,你可以定義的連接表是這樣的:

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

這會爲你生成一個遷移文件和模型user_group.rb

運行遷移,並把下面的東西在其他型號:

在user_group.rb

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

我n您的用戶模型

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 

這是你可以達到你想要的關係。

+1

感謝您的好回答。我想我還發現了一個吸引人的模型名稱:用戶通過成員資格進行了分組。 – 2014-11-25 07:29:29

+0

更有意義:) – Rubyrider 2014-11-25 07:39:36