see migration.ex
then
mix ecto.migrate
see:
- role.Ex
- permission.ex
- role_permission.ex
import Ecto.Changeset
alias ManyToManyExample.Repo
alias ManyToManyExample.Role
alias ManyToManyExample.Permission
# Add a role
role = Role.changeset(%Role{}, %{name: "Test role"})
|> Repo.insert!()
# Add a permission
permission = Permission.changeset(%Permission{}, %{name: "Test permission"})
|> Repo.insert!()
# Add permission to role
role
|> Repo.preload(:permissions)
|> change()
|> put_assoc(:permissions, [permission])
|> Repo.update!()
import Ecto.Changeset
alias ManyToManyExample.Repo
alias ManyToManyExample.Role
alias ManyToManyExample.Permission
# Get role with permissions
role = Repo.get_by! Role, name: "Test role"
|> Repo.preload(:permissions)
# Add a new permission
permission = Permission.changeset(%Permission{}, %{name: "New permission"})
|> Repo.insert!()
# Add permission to role
role
|> change()
|> put_assoc(:permissions, role.permissions ++ [permission])
|> Repo.update!()
import Ecto.Changeset
alias ManyToManyExample.Repo
alias ManyToManyExample.Role
alias ManyToManyExample.Permission
# Get role with permissions
role = Repo.get_by! Role, name: "Test role"
|> Repo.preload(:permissions)
# Add a new permission
permission = Permission.changeset(%Permission{}, %{name: "New permission"})
|> Repo.insert!()
# Remove permission from role
role
|> change()
|> put_assoc(:permissions, role.permissions -- [permission])
|> Repo.update!()