2017-11-14に投稿

サイボウズLiveを作る-第2回-グループ登録まで

アイコンは出来たので引き続きグループの作成機能。

本家だととりあえず一番簡単なパターンでは、グループ名だけ入力すれば登録できる。
とりあえずそこまでを作った。
アイコンも選択できるようにしている。

実装は非常にシンプルで、まずモデルに所属メンバー用のアソシエーションを設定。マイグレーションなどもマニュアル通り。

  many_to_many :users, Cybozulive.User, join_through: "groups_users"

登録処理もシンプル。

  def create(conn, %{"group" => group_params}) do
    user = Auth.get_user(conn)
    changeset = Ecto.build_assoc(user, :groups)
    |> Group.changeset(group_params)
    |> Ecto.Changeset.put_assoc(:users, [user])

    case Repo.insert(changeset) do
      {:ok, group} ->
        conn
        |> put_flash(:info, "グループを作成しました。")
        |> redirect(to: group_path(conn, :show, group))
      {:error, changeset} ->
        icons = IconRepo.get_select_icons(user.id)
        render(conn, "new.html", changeset: changeset, icons: icons, show_group: false)
    end
  end

とりあえずここまでを公開した。

Copying live

https://live.alphabrend.com

GCEのf1-micro、1台にDBまで全部詰め込み。
Let's EncryptでSSL対応。
体裁とか未完成の部分はぐちゃぐちゃ。


view_list [連載] サイボウズLiveを作る
第1回 サイボウズLiveを作る-第1回-アイコン登録まで
第2回 サイボウズLiveを作る-第2回-グループ登録まで
第3回 サイボウズLiveを作る-第3回-トピック登録まで
第4回 サイボウズLiveを作る-第4回-Todoをざっと
第5回 サイボウズLiveを作る-第5回-グループへ参加

だら@Crieit開発者

Crieitの開発者です。 主にLAMPで開発しているWebエンジニアです(在宅)。大体10年程。 記事でわかりにくいところがあればDMで質問していただくか、案件発注してください。 業務依頼、同業種の方からのコンタクトなどお気軽にご連絡ください。 業務経験有:PHP, MySQL, Laravel5, CakePHP3, JavaScript, RoR 趣味:Elixir, Phoenix, Node, Nuxt, Express, Vue等色々

Crieitは個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!

ボードとは?

関連記事

コメント