首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ecto连接表验证

Ecto连接表验证
EN

Stack Overflow用户
提问于 2019-11-10 09:47:55
回答 1查看 111关注 0票数 0

我有一个名为:seasons_teams的连接表

代码语言:javascript
复制
  schema "seasons_teams" do
    field(:score, :integer)
    belongs_to(:season, Season, foreign_key: :season_id, type: :binary_id)
    belongs_to(:team, Team, foreign_key: :team_id, type: :binary_id)

    timestamps()
  end

这很好,但是我想验证一下seasonteam的副本是不可能存在的。

例如:

代码语言:javascript
复制
  %MyApp.SeasonsTeams{
    __meta__: #Ecto.Schema.Metadata<:loaded, "seasons_teams">,
    id: "89ec0dbd-cc61-4ba9-8dcf-b86b858d2882",
    inserted_at: ~N[2019-11-10 00:58:27],
    score: nil,
    season: #Ecto.Association.NotLoaded<association :season is not loaded>,
    season_id: "79c4bd04-d362-495c-ab13-649b299c23e2",
    team: #Ecto.Association.NotLoaded<association :team is not loaded>,
    team_id: "b6c408ef-d48e-4de9-8a46-8ae7bb12b699",
    updated_at: ~N[2019-11-10 00:58:27]
  },
  %MyApp.SeasonsTeams{
    __meta__: #Ecto.Schema.Metadata<:loaded, "seasons_teams">,
    id: "89a7fc61-6ce4-4a6d-a9dc-8e3494378e33",
    inserted_at: ~N[2019-11-10 00:58:37],
    score: nil,
    season: #Ecto.Association.NotLoaded<association :season is not loaded>,
    season_id: "79c4bd04-d362-495c-ab13-649b299c23e2",
    team: #Ecto.Association.NotLoaded<association :team is not loaded>,
    team_id: "b6c408ef-d48e-4de9-8a46-8ae7bb12b699",
    updated_at: ~N[2019-11-10 00:58:37]
  }

您可以看到这两个记录具有相同的season_id和相同的team_id,我不希望这成为可能。我很好奇Phoenix/Elixir/Ecto是否提供了一种很好的方法来处理这种情况?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-10 23:24:41

在该表上创建一个跨越两个字段的唯一索引,并使用unique_constraint验证唯一约束:

代码语言:javascript
复制
# In the migration
create unique_index(:seasons_teams, [:season_id, :team_id], name: :seasons_teams_season_id_team_id_index)

# In the changeset function
cast(season_team, params, [:season_id])
|> unique_constraint(:season_id, name: :seasons_teams_season_id_team_id_index)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58785100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档