{"id":2641,"date":"2018-05-21T18:05:07","date_gmt":"2018-05-21T09:05:07","guid":{"rendered":"http:\/\/www.whoocus.com\/blog\/?p=2641"},"modified":"2018-05-21T18:08:07","modified_gmt":"2018-05-21T09:08:07","slug":"phoenix-association-belongs_to","status":"publish","type":"post","link":"https:\/\/www.blowfish.co.jp\/?p=2641","title":{"rendered":"Phoenix association belongs_to"},"content":{"rendered":"<p>\u25a0 member.ex<br \/>\n[ruby]<br \/>\ndefmodule Sample.Portal.Member do<br \/>\n  use Ecto.Schema<br \/>\n  import Ecto.Changeset<\/p>\n<p>  schema &quot;members&quot; do<br \/>\n    field :birthday, :date<br \/>\n    field :email, :string<br \/>\n    field :first_name, :string<br \/>\n    field :last_name, :string<br \/>\n    field :passwd, :string<br \/>\n    field :gender_cd, :integer<br \/>\n    #    field :team_id, :id<br \/>\n    belongs_to :team, Sample.Portal.Team<\/p>\n<p>    timestamps()<\/p>\n<p>  end<\/p>\n<p>  @doc false<br \/>\n  def changeset(member, attrs) do<br \/>\n    member<br \/>\n    |&gt; cast(attrs, [:last_name, :first_name, :email, :passwd, :birthday, :team_id, :gender_cd])<br \/>\n    |&gt; validate_required([:last_name, :first_name, :email, :passwd, :birthday, :team_id ])<br \/>\n  end<br \/>\nend<br \/>\n[\/ruby]<\/p>\n<p>\u25a0 repo.ex<br \/>\n[ruby]<br \/>\n  def list_members do<br \/>\n    Repo.all(Member)<br \/>\n    |&gt; Repo.preload(:team)<br \/>\n  end<\/p>\n<p>  def get_member!(id), do: Repo.get!(Member, id) |&gt; Repo.preload(:team)<br \/>\n[\/ruby]<\/p>\n<p>\u25a0 index.html.eex<br \/>\n[ruby]<br \/>\n  &lt;%= for member &lt;- @members do %&gt;<br \/>\n    &lt;td&gt;&lt;%= member.team.team_name %&gt;&lt;\/td&gt;<br \/>\n  &lt;% end %&gt;<br \/>\n[\/ruby]<\/p>\n<p>\u25a0 show.html.eex<br \/>\n[ruby]<br \/>\n    &lt;%= @member.team.team_name %&gt;<br \/>\n[\/ruby]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u25a0 member.ex [ruby] defmodule Sample.Portal.Member do use Ecto.Schema import Ecto.Changeset schema &quot;member [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"saved_in_kubio":false,"footnotes":""},"categories":[53,54,4],"tags":[],"class_list":["post-2641","post","type-post","status-publish","format-standard","hentry","category-elixir","category-phoenix-framework","category-tech"],"_links":{"self":[{"href":"https:\/\/www.blowfish.co.jp\/index.php?rest_route=\/wp\/v2\/posts\/2641","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.blowfish.co.jp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.blowfish.co.jp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.blowfish.co.jp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.blowfish.co.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2641"}],"version-history":[{"count":2,"href":"https:\/\/www.blowfish.co.jp\/index.php?rest_route=\/wp\/v2\/posts\/2641\/revisions"}],"predecessor-version":[{"id":2643,"href":"https:\/\/www.blowfish.co.jp\/index.php?rest_route=\/wp\/v2\/posts\/2641\/revisions\/2643"}],"wp:attachment":[{"href":"https:\/\/www.blowfish.co.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2641"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.blowfish.co.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2641"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.blowfish.co.jp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}