【发布时间】:2015-12-09 04:50:34
【问题描述】:
我对 Phoenix, Ecto 生态系统还很陌生。我正在尝试在表之间创建以处理多对多关系。不幸的是,我不知道如何创建包含用户和事件数据的变更集(插入它),而且我很难在可用来源中找到该信息。你能帮忙吗?至少指出我正确的方向?
当我使用关系执行另一项任务时,我使用的是 build/2,但它只需要一个 assoc 参数。
我创建了以下结构:
表 1,包含事件的数据:
schema "events" do
field :name, :string
field :address, :string
field :location_x, :float
field :location_y, :float
field :date, Ecto.DateTime
field :description, :string
has_many :presences, Kpsz.Model.Presence
end
表2,用户数据:
schema "users" do
field :login, :string
field :password, :string
field :email, :string
field :role, :integer
field :name, :string
field :surname, :string
field :class, :string
field :phone_number, :string
field :avatar, :string
has_many :presences, Kpsz.Model.Presence
timestamps
end
在中间的表格中保存用户在事件中的存在情况:
schema "presences" do
belongs_to :user, Kpsz.Model.User, foreign_key: :user_id
belongs_to :event, Kpsz.Model.Event, foreign_key: :event_id
end
def changeset(user, params \\ :empty) do
user
|> cast(params, @required_fields, @optional_fields)
|> foreign_key_constraint(:user_id)
|> foreign_key_constraint(:event_id)
end
【问题讨论】:
标签: elixir phoenix-framework ecto