私は2つのテーブルusers
とroles
を持っています。私がしようとしているのは、users
が複数のroles
を持つことができる、それらの間の単純な関連付けを作成することです。has_many関連、複数の関連付けを1つの列に格納
データベースでは、それはそれのようになります。
役割:
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