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,它只有在團體和成員表。
或只是'user.groups_ids << group_id',而不是那三行。這一個會立即保存到數據庫,所以你不必執行'user.save'或者其他東西。 –
以及如何提取我選擇添加成員的組的group_id?由於每個用戶可能有幾個組。 –
我的用戶表中沒有group_id。我仍然可以使用上述說法嗎?所有這些都將在user_controller或group_controller中? –