Skip to content

Instantly share code, notes, and snippets.

defmodule Markably.Application do
# See https://hexdocs.pm/elixir/Application.html
# for more information on OTP Applications
@moduledoc false
use Application
alias Markably.Accounts.Invitations
require Logger
def start(_type, _args) do
defmodule Pearls.Repo.Migrations.CreateBibleBooks do
use Ecto.Migration
def change do
create table(:bible_books) do
add :name, :string
add :bible_id, references(:bible_versions, on_delete: :nothing)
add :testament, :string, null: false
timestamps()
user_status: <%= @user.status %>
<div class="mb-6">
<%= select(f, @user.status, @statuses) %>
</div>
defmodule ElijahWeb.EnsureRolePlug do
@moduledoc """
This plug ensures that a user has a particular role before accessing a given route.
## Example
Let's suppose we have three roles: :admin, :manager and :user.
If you want a user to have at least manager role, so admins and managers are authorised to access a given route
plug ElijahWeb.EnsureRolePlug, [:admin, :manager]
defmodule ElijahWeb.Router do
use ElijahWeb, :router
import ElijahWeb.UserAuth
import Plug.BasicAuth
alias ElijahWeb.EnsureRolePlug
pipeline :browser do
plug :accepts, ["html"]
plug :fetch_session
@mazz
mazz / app.js
Last active October 23, 2020 22:56
liveview alpine modal live component
// We need to import the CSS so that webpack will load it.
// The MiniCssExtractPlugin is used to separate it out into
// its own CSS file.
import "../css/app.scss"
// webpack automatically bundles all modules in your
// entry points. Those entry points can be configured
// in "webpack.config.js".
//
// Import deps with the dep name or local files with a relative path, for example:
@mazz
mazz / error.log
Last active October 22, 2020 03:15
runtime error
[error] an exception was raised:
** (Phoenix.Template.UndefinedError) Could not render "invitation_request.html" for ElijahWeb.InvitationRequestView, please define a matching clause for render/2 or define a template at "lib/elijah_web/templates/invitation_request/*". The following templates were compiled:
* invitation_request_loading.html
[error] an exception was raised:
** (Phoenix.Template.UndefinedError) Could not render "invitation_request.html" for ElijahWeb.InvitationRequestView, please define a matching clause for render/2 or define a template at "lib/elijah_web/templates/invitation_request/*". The following templates were compiled:
* invitation_request_loading.html
@mazz
mazz / iex.ex
Created October 19, 2020 20:43
insert two users to the same org, second association clobbers first
iex(2)> org = Repo.get(Org, 1)
[debug] QUERY OK source="orgs" db=11.6ms decode=1.4ms queue=1.4ms idle=1333.3ms
SELECT o0."id", o0."basename", o0."shortname", o0."uuid", o0."hash_id", o0."inserted_at", o0."updated_at" FROM "orgs" AS o0 WHERE (o0."id" = $1) [1]
%Elijah.Schema.Org{
__meta__: #Ecto.Schema.Metadata<:loaded, "orgs">,
basename: "app",
channels: #Ecto.Association.NotLoaded<association :channels is not loaded>,
hash_id: "6vz6",
id: 1,
inserted_at: ~U[2020-10-19 16:27:51Z],
@mazz
mazz / search_live.ex
Last active October 5, 2020 12:10
liveview
defmodule ElijahWeb.SearchLive do
use ElijahWeb, :live_view
alias Elijah.Bank
require Logger
def mount(_params, _session, socket) do
socket =
assign(socket,