<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="93543" data-post-id="93543">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="ericmj" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/ericmj/120/25920_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  ericmj
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Elixir Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi, glad you are liking the book.</p>
<p>Chapter 12 was a difficult chapter to write, balancing our experiences writing Ecto applications while still maintaining that there is no right or wrong and that there may be other equally valid ways of organizing applications. Where Multi fits best was something we discussed while writing the chapter and it seems like somewhere during the discussions some things were missed.</p>
<p>After discussing this again we are amending this part of the chapter and adding a paragraph that clarifies that we believe multi fits better in context modules than schema modules. The reason being, while multi is a pure data structure like changesets, with multi you usually compose functions from multiple schemas and with changesets you compose functions within a single schema. Since multi is working with multiple schemas it fits better on a higher level inside a context.</p>
<p>Thank you for bringing this up and helping us improve the book during the beta! <img src="https://forum.elixirforum.com/images/emoji/apple/purple_heart.png?v=15" title=":purple_heart:" class="emoji" alt=":purple_heart:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="93543" data-batch-url="/posts/batch_likers">
                        7
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/programming-ecto-pragprog/13287/27">Post #26</a>
	                </div>
	            </div>
              <div id="likers-container-93543" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="93543"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #26"></div>
  </section>
</div>
    <div class="postbit" id="93545" data-post-id="93545">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="ericmj" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/ericmj/120/25920_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  ericmj
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Elixir Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="tme_317" data-post="1" data-topic="16024">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/t/0ea827/48.png" class="avatar"><a href="https://forum.elixirforum.com/t/programming-ecto-pragprog-questions-feedback/16024/1" rel="nofollow">Programming Ecto - (Pragprog) - Questions &amp; Feedback</a></div>
<blockquote>
<p>Are there any large/decent scale OSS projects I can study that follow the recommended pattern… especially as it relates to Multi or query use defined in schema modules?</p>
</blockquote>
</aside>
<p>You can look at <a href="https://github.com/hexpm/hexpm" rel="noopener nofollow ugc">hexpm</a> the application that runs <a href="https://hex.pm" rel="nofollow">https://hex.pm</a>. Examples of context modules using multis are: <a href="https://github.com/hexpm/hexpm/blob/master/lib/hexpm/accounts/keys.ex" rel="noopener nofollow ugc">Keys</a>, <a href="https://github.com/hexpm/hexpm/blob/master/lib/hexpm/accounts/users.ex" rel="noopener nofollow ugc">Users</a>, and <a href="https://github.com/hexpm/hexpm/blob/master/lib/hexpm/repository/releases.ex" rel="noopener nofollow ugc">Releases</a>.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="93545" data-batch-url="/posts/batch_likers">
                        6
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/programming-ecto-pragprog/13287/28">Post #27</a>
	                </div>
	            </div>
              <div id="likers-container-93545" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="93545"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #27"></div>
  </section>
</div>
    <div class="postbit" id="93592" data-post-id="93592">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="sergek" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sergek/120/11564_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  sergek
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I have started reading the book and got problem with fist exercise. I think the code provided with the book though pragrpog website is incomplete:</p>
<pre><code>    08:54:23.966 [debug] QUERY OK db=2.4ms
INSERT INTO "genres" ("name","wiki_tag","inserted_at","updated_at") VALUES ($1,$2,$3,$4) RETURNING "id" ["jazz", "Jazz", {{2018, 8, 22}, {22, 54, 23, 958894}}, {{2018, 8, 22}, {22, 54, 23, 958900}}]

08:54:23.970 [debug] QUERY OK db=4.0ms
commit []

08:54:23.971 [debug] QUERY OK db=0.4ms queue=0.1ms
begin []

08:54:23.973 [debug] QUERY OK db=2.4ms
INSERT INTO "genres" ("name","wiki_tag","inserted_at","updated_at") VALUES ($1,$2,$3,$4) RETURNING "id" ["live", "Concert", {{2018, 8, 22}, {22, 54, 23, 971190}}, {{2018, 8, 22}, {22, 54, 23, 971196}}]

08:54:23.974 [debug] QUERY OK db=0.4ms
commit []
** (UndefinedFunctionError) function MusicDB.Note.__schema__/1 is undefined (module MusicDB.Note is not available)
    MusicDB.Note.__schema__(:primary_key)
    (ecto) lib/ecto/changeset/relation.ex:138: Ecto.Changeset.Relation.change/3
    (ecto) lib/ecto/repo/schema.ex:597: anonymous fn/4 in Ecto.Repo.Schema.surface_changes/3
    (elixir) lib/enum.ex:1925: Enum."-reduce/3-lists^foldl/2-0-"/3
    (ecto) lib/ecto/repo/schema.ex:584: Ecto.Repo.Schema.surface_changes/3
    (ecto) lib/ecto/repo/schema.ex:189: Ecto.Repo.Schema.do_insert/4
    (ecto) lib/ecto/repo/schema.ex:125: Ecto.Repo.Schema.insert!/4
    priv/repo/seeds.exs:15: (file) 
</code></pre>
<p>I have check the code and function MusicDB.Note is missing.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="93592" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/programming-ecto-pragprog/13287/29">Post #28</a>
	                </div>
	            </div>
              <div id="likers-container-93592" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="93592"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #28"></div>
  </section>
</div>
    <div class="postbit" id="93710" data-post-id="93710">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="darinwilson" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/darinwilson/120/15104_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  darinwilson
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Author of Programming Ecto</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi <a class="mention" href="/u/sergek" rel="nofollow">@sergek</a>. Sorry for the trouble - I screwed up the source code when we pushed the last beta, and didn’t catch this. <img src="https://forum.elixirforum.com/images/emoji/apple/disappointed_face.png?v=15" title=":disappointed_face:" class="emoji" alt=":disappointed_face:" loading="lazy" width="20" height="20"></p>
<p>I’ve submitted a fix, so if you download the latest version of the source from the <a href="https://pragprog.com/book/wmecto/programming-ecto" rel="noopener nofollow ugc">book’s webpage,</a> everything should be working again.</p>
<p>Please give that a try, and post again if you’re still having trouble. Thanks for your patience! <img src="https://forum.elixirforum.com/images/emoji/apple/heart.png?v=15" title=":heart:" class="emoji" alt=":heart:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="93710" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/programming-ecto-pragprog/13287/30">Post #29</a>
	                </div>
	            </div>
              <div id="likers-container-93710" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="93710"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #29"></div>
  </section>
</div>
    <div class="postbit" id="93727" data-post-id="93727">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="sergek" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sergek/120/11564_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  sergek
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thank you for the prompt fix! <img src="https://forum.elixirforum.com/images/emoji/apple/grinning.png?v=15" title=":grinning:" class="emoji" alt=":grinning:" loading="lazy" width="20" height="20"></p>
<p>It did work much better this time. Although  this time I got warnings like the ones below:<br>
==&gt; music_db<br>
Compiling 14 files (.ex)<br>
warning: invalid association <code>notes</code> in schema MusicDB.Artist: associated schema MusicDB.Note does not have field <code>artist_id</code><br>
lib/music_db/artist.ex:9: MusicDB.Artist (module)</p>
<pre><code>warning: invalid association `notes` in schema MusicDB.Track: associated schema MusicDB.Note does not have field `track_id`
  lib/music_db/track.ex:9: MusicDB.Track (module)

warning: invalid association `notes` in schema MusicDB.Album: associated schema MusicDB.Note does not have field `album_id`
  lib/music_db/album.ex:9: MusicDB.Album (module)
</code></pre>
<p>Is that something to worry about?</p>
<p>Cheers</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="93727" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/programming-ecto-pragprog/13287/31">Post #30</a>
	                </div>
	            </div>
              <div id="likers-container-93727" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="93727"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #30"></div>
  </section>
</div>
    <div class="postbit" id="93740" data-post-id="93740">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="darinwilson" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/darinwilson/120/15104_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  darinwilson
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Author of Programming Ecto</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>It shouldn’t block you from working with the code, and we’ll get rid of the warning in the next beta <img src="https://forum.elixirforum.com/images/emoji/apple/slightly_smiling_face.png?v=15" title=":slightly_smiling_face:" class="emoji" alt=":slightly_smiling_face:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="93740" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/programming-ecto-pragprog/13287/32">Post #31</a>
	                </div>
	            </div>
              <div id="likers-container-93740" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="93740"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #31"></div>
  </section>
</div>
    <div class="postbit" id="93896" data-post-id="93896">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="sergek" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sergek/120/11564_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  sergek
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks Darin,</p>
<p>So far so good! Book is awesome - I am very glad I bought it.</p>
<p>Cheers</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="93896" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/programming-ecto-pragprog/13287/33">Post #32</a>
	                </div>
	            </div>
              <div id="likers-container-93896" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="93896"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #32"></div>
  </section>
</div>
    <div class="postbit" id="95181" data-post-id="95181">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="peerreynders" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/peerreynders/120/5826_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  peerreynders
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>2018-09-05</p>
<aside class="quote no-group">
<blockquote>
<p>This is just to let you know that <em>Programming Ecto (eBook)</em> has recently been updated.<br>
<strong>Changes in This Release</strong></p>
<ul>
<li>Added chapter 14, Creating Polymorphic Associations</li>
<li>Fixed more reader-submitted errata – many thanks to the sharp readers spotting errors!</li>
</ul>
</blockquote>
</aside> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="95181" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/programming-ecto-pragprog/13287/34">Post #33</a>
	                </div>
	            </div>
              <div id="likers-container-95181" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="95181"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #33"></div>
  </section>
</div>
    <div class="postbit" id="100065" data-post-id="100065">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="bdarla" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bdarla/120/19471_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  bdarla
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Does anyone know whether this book will be updated to reflect the changes in Ecto 3.0?</p>
<p>Thanks in advance!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="100065" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/programming-ecto-pragprog/13287/35">Post #34</a>
	                </div>
	            </div>
              <div id="likers-container-100065" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="100065"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #34"></div>
  </section>
</div>
    <div class="postbit" id="100071" data-post-id="100071">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="sweeneydavidj" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sweeneydavidj/120/5892_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  sweeneydavidj
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote group-Elixir-Core-Team" data-username="ericmj" data-post="23" data-topic="13287">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/ericmj/48/25920_2.png" class="avatar"> ericmj:</div>
<blockquote>
<p>Yes, it will be updated to Ecto 3.0 once the release candidate is out.</p>
</blockquote>
</aside>
<p>Posted on July 1st above <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"> .</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="100071" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/programming-ecto-pragprog/13287/36">Post #35</a>
	                </div>
	            </div>
              <div id="likers-container-100071" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="100071"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #35"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/13287/load_more?page=4">Load more posts (20 remaining)</a>
</div></template></turbo-stream>