1
我有兩個表,users
和roles
。我想要做的是在它們之間建立簡單的關聯,即users
可以有多個roles
。has_many關聯,在一列中存儲多個關聯
在數據庫應該看起來像:
角色:
id | name
-----------
1 | ADMIN
2 | USER
用戶
id | email | username | roles
-------------------------------------
1 [email protected] test [1,2]
到目前爲止,我想出了下面的代碼:
def change do
create table(:users) do
add :email, :string
add :username, :string
add :roles, references(:roles)
end
end
schema "users" do
field :email, :string
field :username, :string
has_many :roles, TimesheetServer.Role
timestamps()
end
def changeset(struct, params \\ %{}) do
struct
|> cast(params, [:email, :username])
|> validate_required([:email, :username])
end
def change do
create table(:roles) do
add :name, :string
timestamps()
end
end
schema "roles" do
field :name, :string
belongs_to :users, TimesheetServer.User
timestamps()
end
然後我試圖種子數據庫這樣的:
User.changeset(
%User{},%{email: "[email protected]", username: "test", roles: [
%Role{name: "ADMIN"},
%Role{name: "USER"}
]})
|> Repo.insert
不幸的是,這並不在user
表中創建角色的列表,並且不保存在roles
表的作用。
任何幫助或提示將不勝感激!
所以,用戶應該有很多的角色和作用應該有很多的用戶? – Ninigi