2017-04-17 70 views
0

我正在使用rails 5創建一個Web應用程序,用戶可以在其中創建組並將文件上傳到該組。我創建了一個用戶模型,組模型和成員模型。無法通過關聯創建has_many,如何填充表?

class User < ApplicationRecord 

    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
    :recoverable, :rememberable, :trackable, :validatable 


    groupify :group_member 
    groupify :named_group_member 

    validates :email, :presence => true, :uniqueness => true 
    has_many :members 
    has_many :groups, through: :member 
end 

class Group < ApplicationRecord 
    groupify :group, members: [:users, :assignments], default_members: :users 

    has_many :members 
    has_many :groups, through: :member 
end 

class Member < ApplicationRecord 
    belongs_to :group 
    belongs_to :user 
end 

我可以創建用戶和組,但我不知道如何填寫成員表。它由2列user_id和group_id組成。

編輯: 這是我的移民文件

class CreateMembers < ActiveRecord::Migration[5.0] 
    def change 
    create_table :members do |t| 
     t.integer :user_id 
     t.integer :group_id 

     t.timestamps 
    end 
    add_index :members , [:user_id,:group_id] 
    end 
end 
class DeviseCreateUsers < ActiveRecord::Migration[5.0] 
    def change 
    create_table :users do |t| 
     t.string :name ,    null: false 
     t.string :email,    null: false, default: "" 
     t.string :encrypted_password, null: false, default: "" 

     t.string :reset_password_token 
     t.datetime :reset_password_sent_at 
     t.datetime :remember_created_at 
     t.integer :sign_in_count, default: 0, null: false 
     t.datetime :current_sign_in_at 
     t.datetime :last_sign_in_at 
     t.string :current_sign_in_ip 
     t.string :last_sign_in_ip 


     t.timestamps null: false 
    end 

    add_index :users, :email,    unique: true 
    add_index :users, :reset_password_token, unique: true 
    end 
end 

我沒有在我的用戶表GROUP_ID,它只有在團體和成員表。

回答

0

有兩種方法。

1)創建會員

Member.create(user_id: user_id, group_id: group_id) 

2)添加組ID在User.groups_ids

ids = user.groups_ids 
ids.push(group_id) 
user.groups_ids = ids 
+0

或只是'user.groups_ids << group_id',而不是那三行。這一個會立即保存到數據庫,所以你不必執行'user.save'或者其他東西。 –

+0

以及如何提取我選擇添加成員的組的group_id?由於每個用戶可能有幾個組。 –

+0

我的用戶表中沒有group_id。我仍然可以使用上述說法嗎?所有這些都將在user_controller或group_controller中? –

0

通應該是複數

through: :members