因此,這裏是我的問題:我有兩個模式:表和訂單插入孩子的ID到父模型藥劑/鳳凰
schema "tables" do
field :table_number, :string
field :current_order, :integer
has_many :orders, Pos1.Order
schema "orders" do
field :number_of_customers, :integer
field :completed, :boolean, default: false
belongs_to :table, Pos1.Table
當我創建一個新的訂單,控制器只需插入變更和重定向到顯示。
def create(conn, %{"order" => order_params}) do
changeset = conn.assigns[:table]
|> build_assoc(:orders)
|> Order.changeset(order_params)
case Repo.insert(changeset) do
{:ok, _order} ->
conn
|> put_flash(:info, "Order created successfully.")
|> redirect(to: table_order_path(conn, :show, conn.assigns[:table], _order))
{:error, changeset} ->
render(conn, "new.html", changeset: changeset)
end
end
但是,是否可以將創建的訂單的ID插入到父級(表)到current_order字段中?
此外,當order.completed更改爲「true」值時,如何從current_order(表中)刪除id?
基本上,我正在研究功能,如果表有current_order - 它會顯示onclick。如果沒有,那麼它會重定向到一個頁面來創建訂單。並且創建了一個命令,表中的current_order應該被分配。
試試這個 - https://github.com/elixir-lang/ecto/issues/1114 – coderVishal
OFF-TOPIC:我也推薦在你的代碼中應用Elixir風格指南:https://github.com/niftyn8/elixir_style_guide它使其他人更容易閱讀。甚至有一個工具可以檢查它並報告所有問題:https://github.com/rrrene/credo如果其他人閱讀它,你可以編輯你的問題並正確設置代碼:) – tkowal
@tkowal thanks for鏈接!我會檢查出來 – Ilya