我看到updateDict模块中有一个,但是一个update_all改变所有值的方法呢?
我尝试这样做,Enum.map但类型改变了:
iex(6)> Enum.map(%{:a => 2}, fn {k, v} -> {k, v + 1} end)
[a: 3]
Run Code Online (Sandbox Code Playgroud) 我正在凤凰城编写一个简单的CRUD应用程序,管理员在创建新组织时可以使用初始员工帐户进行配置.
有效地,组织和用户之间的关系是多对多的.
我想出了以下内容:
用户架构:
defmodule MyApp.User do
use MyApp.Web, :model
schema "users" do
field :name, :string
field :email, :string
field :password, :string, virtual: true
field :password_hash, :string
end
def changeset(...) # validate email, password confirmation etc.
Run Code Online (Sandbox Code Playgroud)组织架构:
defmodule MyApp.Org do
use MyApp.Web, :model
schema "orgs" do
field :official_name, :string
field :common_name, :string
has_many :org_staff_users, MyApp.OrgStaffUser
has_many :users, through: [:org_staff_users, :user]
end
def changeset(model, params \\ :empty) do
model
|> cast(params, ~w(official_name common_name), [])
end
def provisioning_changeset(model, params \\ :empty) do …Run Code Online (Sandbox Code Playgroud)作为Elixir的新手,我在理解模式匹配方面遇到了一些问题.
如果我有这样的Elixir数据结构:
list_with_maps = [%{"id" => 1, "name" => "a"}, %{"id" => 2, "name" => "b"}]
Run Code Online (Sandbox Code Playgroud)
从中获取所有id字段的值的最佳方法是什么?
使用PostgreSQL,我们可以这样做:
CREATE TYPE order_status AS ENUM ('placed','shipping','delivered')
Run Code Online (Sandbox Code Playgroud)
从Ecto的官方文档来看,没有本地类型可以映射Postgres的枚举类型.此模块为枚举结构提供自定义类型,但它映射到数据库中的整数.我可以轻松地使用该库,但我更喜欢使用数据库附带的本机枚举类型.
Ecto还提供了一种创建自定义类型的方法,但据我所知,自定义类型必须映射到本机Ecto类型...
任何人都知道这是否可以在Ecto的架构中完成?如果是,迁移将如何运作?
似乎在凤凰中配置文件的加载和编译方式在使用config.exs或中使用第三方模块时会出现问题dev.exs/prod.exs/test.exs.
示例:要设置Guardian进行JWT身份验证,我正在尝试使用该JOSE.JWK模块在我的JWK创建/加载config.exs.我可以在控制台中使用该模块iex -S mix phoenix.server.它当然是作为依赖项安装的.我得到的错误是
** (Mix.Config.LoadError) could not load config config/config.exs
** (UndefinedFunctionError) undefined function JOSE.JWK.from_file/2 (module JOSE.JWK is not available)
Run Code Online (Sandbox Code Playgroud)
这是我的config.exs中的代码
# Configure Guardian for JWT Authentication
config :guardian, Guardian,
allowed_algos: ["HS512"], # optional
verify_module: Guardian.JWT, # optional
issuer: "MyApp",
ttl: { 30, :days },
verify_issuer: true, # optional
secret_key: System.get_env("GUARDIAN_KEY_PASSPHRASE") |> JOSE.JWK.from_file(System.get_env("GUARDIAN_KEY_FILE")),
serializer: MyApp.GuardianSerializer
Run Code Online (Sandbox Code Playgroud)
当我将调用包装JOSE.JWK.from_file/2在匿名函数中时,它可以工作.但是当然Guardian.config(:secret_key)的值是匿名函数本身而不是它的返回值:
# Configure Guardian for JWT Authentication
config :guardian, …Run Code Online (Sandbox Code Playgroud) 我正在处理我的应用程序的统计页面,并尝试按日期查询数据.
为了获得日期范围,我使用 Calendar.Date
date_range = Date.days_after_until(start_date, end_date, true)
|> Enum.to_list
Run Code Online (Sandbox Code Playgroud)
它返回日期的日期列表,每个日期看起来像"2017-04-07".因此,根据我的日期date_range,我尝试查询,但它会触发如下错误.
where cannot be cast to type Ecto.DateTime in query: from o in Myapp.Order,
where: o.created_date >= ^~D[2017-04-07]
对于created_date秩序领域,我做了这样的领域,
field :created_date, Ecto.DateTime.
如果我想按日期查询,我该如何查询?
预先感谢.
我有以下型号:
# Foo model
schema "foo" do
field :name, :string
has_many: :bars, App.Bar
end
# App model
schema "bar" do
field :name, :string
belongs_to: foo, App.Foo
end
Run Code Online (Sandbox Code Playgroud)
这个形式:
# form.html (Foo)
<%= form_for @changeset, @action, fn f -> %>
<%= text_input f, :name, class: "form-control" %>
<%= submit "Submit", class: "btn btn-primary" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
这里面的形式,我如何添加文本字段来填充我的新Foo用Bars?
以下不起作用,因为bars没有预加载:
<%= text_input f, :bars, class: "form-control" %>
Run Code Online (Sandbox Code Playgroud)
我是在正确的轨道上吗?如果是这样,我怎么能Bars在表格中预加载?
更新,控制器:
def new(conn, _params) do
changeset …Run Code Online (Sandbox Code Playgroud) 我在我的RethinkDB数据库中存储来自contenteditable标记的原始html.现在我想在检索后显示内容.
html.eex
<div id="contentEditableText">
<%= for %{"contentText" => contentText} <- @contentText.data do %>
<div><%= "#{contentText}" %></div>
<% end %>
</div>
Run Code Online (Sandbox Code Playgroud)
我可以成功检索它,但它显示原始的html本身.
我想在Phoenix Framework中提供静态页面以在Angular Views中使用它.我知道我可以提供常规HTML,但我想摆脱默认值LayoutView.我可以用一个解决方案来获得一些不"继承"的凤凰视图LayoutView.可能吗?
我一直在尝试在Elixir或Erlang中找到示例功能,以获取可填写的PDF,然后使用来自应用程序的输入数据填充它.
到目前为止,我无法在Elixir或Erlang中找到任何解决方案.
有没有人知道我们可以用来实现这个目标的好方法或模块?
提前致谢!