2015-07-21 60 views
0

我有一个用户表与我的所有用户Rails的追加表和关系

现在我要介绍的用户群体

所以我需要第二台为群体和群体之间的关系。

应该可以将用户设置在不同的组中。所以我需要一个n:m关系

它读了关于该轨道可以生成我需要的大部分东西,并且还生成迁移文件?真的吗?它是如何工作的?

迁移

class CreateUserGroups < ActiveRecord::Migration 
    def up 
    create_table :user_groups do |t| 
     t.string :name 
     t.integer :size 

     t.timestamps 
    end 
    end 

    def self.down 
    drop_table :user_groups 
    end 
end 


class CreateUserGroupUsers < ActiveRecord::Migration 
    def self.up 
    create_table :user_group_users do |t| 
    t.user_id:integer 
    t.user_groups_id:integer 
    t.timestamps 
    end 
end 

def self.down 
    drop_table :user_group_users 
end 

end 
+1

如果用户有多个组,然后同时集团拥有众多的用户也是如此。所以它将会是多对多的关系。其中包括用户模型,组模型和临时用户组模型。现在为了解多对多的联系,请阅读http://guides.rubyonrails.org/association_basics.html#choosing-between-has-many-through-and-has-and-belongs-to-many,http:// ryandeussing.com/blog/2013/06/12/nested-associations-and-has-many-through/。希望它能帮助你 – Athar

+0

http://www.gitmatt.com/posts/5 – Athar

回答

2

创建一个从终端

rails g model User email:string password:string 
rails g model UserGroup name:string size:integer 

您的用户和用户组模型和迁移,您还需要创建一个UserGroupUser关系管理表称为UserGroupManager

rails g model UserGroupManager user_id:integer user_group_id:integer 

更新您的通过在终端

rake db:migrate 

运行此命令的数据库建立的关系,应用程序/模型内/

# app/models/user.rb 
class User < ActiveRecord::Base 
    has_many :user_group_managers 
    has_many :user_groups, through: :user_group_managers 
end 

# app/models/user_group.rb 
class UserGroup < ActiveRecord::Base 
    has_many :user_group_managers 
    has_many :users, through: :user_group_managers 
end 

# app/models/user_group_manager.rb 
class UserGroupManager < ActiveRecord::Base 
    belongs_to :user_group 
    belongs_to :user 
end 
+0

感谢man第一个代码就是我要找的东西:) ...应用程序/模型中的部分也会自动生成 – Felix

+0

为什么你添加了这个:rails g migration AddColumnUserIdToUser user_id:integer – Felix

+0

为什么在user.rb中只有belongs_to而不是belongs_to_many'? – Felix