【问题标题】:Phoenix seeding dates凤凰播种日期
【发布时间】:2016-04-26 23:31:51
【问题描述】:

任何人都可以帮助解决我担心的愚蠢错误。考虑这两个 sn-ps:

defmodule MosaicApi.Repo.Migrations.CreateCard do
  use Ecto.Migration

  def change do
    create table(:cards) do
      add :creation_date, :date

defmodule MosaicApi.Card do
  use MosaicApi.Web, :model

  schema "cards" do
    field :creation_date, Ecto.Date

我正在尝试使用

播种一些数据
cards = [
    %Card{
        creation_date: "2014-04-17",

我从网上找到的东西中得到了这些简单的字符串;替代方案似乎是 {"2015", "04", "17"}。

** (Ecto.ChangeError) 值 "2014-04-17" for MosaicApi.Card.creation_date in insert 与 Ecto.Date 类型不匹配

【问题讨论】:

  • timestamps呢,你可以从那里提取creation_date

标签: elixir phoenix-framework


【解决方案1】:

试试这个:

cards = [
  %Card{
    creation_date: %Ecto.Date{year: 2014, month: 4, day: 17},

或者:

cards = [
  %Card{
    creation_date: Ecto.Date.cast!("2014-04-17"),

测试的生成器最近从字符串格式更改(这可能是您的想法)https://github.com/phoenixframework/phoenix/commit/badf8065d0b025d6b6ad212bfa0b96e897f06a6a

【讨论】:

  • 这似乎行得通,但是每次有日期进入时我都必须制作这个结构。客户端是 Elm,默认情况下会生成类似 1461660831027 的日期
  • 我已经更新了使用您提供的原始字符串的方法。
  • 我的第二个建议出错了:** (SyntaxError) priv/repo/seeds.exs:46: syntax error before: ','
  • @SimonH 我有一个额外的% - 它只是Ecto.Date.cast(...)
猜你喜欢
  • 1970-01-01
  • 2019-02-14
  • 2016-01-30
  • 2016-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多