2016-02-19 9 views
8

का उपयोग कर एक अपडेट में एसोसिएशन को अपडेट और सम्मिलित करने के लिए मैं एक एकल परिवर्तन लिखने की कोशिश कर रहा हूं जो एक मॉडल को अपडेट करेगा और एक एसोसिएशन डालेगा। मैं कैसे put_assoc/4Ecto: put_assoc

order = order 
    |> Proj.Order.changeset(%{state: "error", error_count: order.error_count + 1}) 
    |> Ecto.Changeset.put_assoc(
     :order_errors, 
     [Proj.OrderError.changeset(%Proj.OrderError{}, %{reason: "not_found"})]) 
    |> Proj.Repo.update! 

उपयोग करने के लिए यह निम्न त्रुटि बाहर प्रिंट पर उदाहरण नहीं मिल सकता है:

** (Ecto.InvalidChangesetError) could not perform update because changeset is invalid. 

* Changeset changes 

%{order_errors: [%Ecto.Changeset{action: :insert, changes: %{id: nil, inserted_at: nil, order_id: nil, reason: "not_found", updated_at: nil}, constraints: [], errors: [order_id: "can't be blank"], filters: %{}, model: %Proj.OrderError{__meta__: #Ecto.Schema.Metadata<:built>, id: nil, inserted_at: nil, order: #Ecto.Association.NotLoaded<association :order is not loaded>, order_id: nil, reason: nil, updated_at: nil}, optional: [], opts: [], params: %{"reason" => "not_found"}, prepare: [], repo: nil, required: [:order_id, :reason], types: %{id: :id, inserted_at: Ecto.DateTime, order_id: :id, reason: :string, updated_at: Ecto.DateTime}, valid?: false, validations: []}], state: "error"} 

* Changeset params 

%{"error_count" => 1, "state" => "error"} 

* Changeset errors 

[] 

किसी भी उदाहरण मैं put_assoc/4 के लिए देख सकते हैं? मैं कैसे ढूंढ सकता हूं कि परिवर्तन क्यों अमान्य है?

इस तरह से काम करने का लक्ष्य यह है कि मुझे आशा है कि नया orderorder_errors प्रीलोड हो जाएगा।

उत्तर

5

मैंने पाया कि इसे Ecto tests में कैसे काम करना है। लघु कहानी, बस changeset निर्माण को हटा दें और सीधे एक नया मॉडल उपयोग करें।

order = order 
    |> Proj.Order.changeset(%{state: "error", error_count: order.error_count + 1}) 
    |> Ecto.Changeset.put_assoc(
     :order_errors, 
     [%Proj.OrderError{reason: "not_found"}]) 
    |> Proj.Repo.update! 

मैं अभी भी पता करने के लिए मूल पोस्ट से त्रुटि संदेश को समझने के लिए करना चाहते हैं

संबंधित मुद्दे