Skip to content

Instantly share code, notes, and snippets.

View pikender's full-sized avatar

Pikender Sharma pikender

  • Faridabad, Haryana
View GitHub Profile
## Changeset Errors in a string
Enum.join(Enum.map(changeset.errors, fn(x) -> {a, b} = x; Atom.to_string(a) <> " " <> b; end), ",")
## Refund
alias Nectar.Repo; alias Nectar.LineItemReturn; alias Nectar.Refund
lr = Repo.get(LineItemReturn, 4) ## Change 4 to relevant id
c = Ecto.build_assoc(lr, :refund)
r = Refund.create_changeset(c, %{"amount" => 20})
r.errors
@pikender
pikender / Change-Ecto-Schema-to-ExtendSchema.diff
Created May 5, 2016 12:56
Add support for removing from schema as well
add support for removing from schema as well
diff --git a/apps/nectar/web/models/product.ex b/apps/nectar/web/models/product.ex
index 100e830..38174a7 100644
--- a/apps/nectar/web/models/product.ex
+++ b/apps/nectar/web/models/product.ex
@@ -2,7 +2,8 @@ defmodule Nectar.ModelExtension do
defmacro __using__(_opts) do
quote do
Module.register_attribute(__MODULE__, :schema_changes, accumulate: true)
@pikender
pikender / Change-Ecto-Schema-to-ExtendSchema.ex
Last active May 5, 2016 12:02
Change Ecto#schema API to Ecto#extend_schema for easy addition and removal from outside using meta-programming
defmodule Nectar.ModelExtension do
defmacro __using__(_opts) do
quote do
Module.register_attribute(__MODULE__, :schema_changes, accumulate: true)
Module.register_attribute(__MODULE__, :remove_schema_changes, accumulate: true)
import Nectar.ModelExtension, only: [add_to_schema: 1, remove_from_schema: 1]
@before_compile Nectar.ModelExtension
end
end
@pikender
pikender / config--initializers--rails4_to_rails3_downgradability.rb
Created May 1, 2016 12:26 — forked from henrik/config--initializers--rails4_to_rails3_downgradability.rb
Fix "NoMethodError: undefined method `sweep'" error when downgrading from Rails 4 to Rails 3.
# Without this fix, downgrading from Rails 4 to Rails 3 causes session cookies to blow up.
#
# The way the flash is stored in the session changed in a backwards-incompatible way.
if Rails::VERSION::MAJOR == 3
module ActionDispatch
class Flash
def call(env)
if (session = env['rack.session']) && (flash = session['flash'])
@pikender
pikender / nectar-web-dynamic-template-path.ex
Last active April 25, 2016 06:52
Defining Phoenix Template Path Fallback
# Refer https://github.com/phoenixframework/phoenix/blob/master/lib/phoenix/view.ex#L136
# For inspiration and implementation
defmodule Nectar.Web do
def view do
quote do
import unquote(__MODULE__), only: [template_root_folder: 1]
use Phoenix.View, root: template_root_folder(__MODULE__)
...
end
end