使用一个创建创建两个模型

时间:2017-12-04 01:08:10

标签: elixir phoenix-framework

创建League时,我还尝试创建名为UsersLeagues的联接关联。这是我目前的尝试:

def changeset(struct, params \\ %{}) do
    struct
      |> cast(params, [:name])
      |> validate_required([:name])
      |> put_assoc(:users_leagues,UsersLeagues.changeset(%UsersLeagues{}, user_id: 1, league_id: 1, commissioner: true))
end

当我尝试使用该变更集创建时,我收到此错误。 expected params to be a :map, got: [user_id: 1, league_id: 1, commissioner: true]

我不确定它要告诉我什么?

同样,我正在尝试创建一个模型,并在该过程中创建一个连接表。

2 个答案:

答案 0 :(得分:1)

def changeset(struct, params \\ %{}) do
struct
  |> cast(params, [:name])
  |> validate_required([:name])
  |> put_assoc(:users_leagues,UsersLeagues.changeset(%UsersLeagues{user_id: 1, league_id: 1, commissioner: true}))
end

试试这个

Changeset用于在将数据插入数据库之前验证数据。

答案 1 :(得分:0)

UserLeagues的第二个参数应该是一个地图,但它是一个关键字列表。将倒数第二行更改为:

  |> put_assoc(:users_leagues,UsersLeagues.changeset(%UsersLeagues{}, %{user_id: 1, league_id: 1, commissioner: true}))