Ecto模型`未定义函数:`在iex中使用宏***时***

时间:2015-10-05 18:56:10

标签: elixir ecto

我在Ecto项目中遇到此问题。没有任何查询正在运行。 我做了一些谷歌搜索和github问题搜索。有几个但与我的问题无关。

这个问题是从这个问题开始的https://github.com/elixir-lang/ecto/issues/602#issuecomment-145596702(主要与我的问题有关)

 query = from u in Univer, where: u.id > 4, select: u

** (RuntimeError) undefined function: u/0一起爆发。不仅是那个型号,还有其他型号。 我的代表。

  {:postgrex, "~> 0.9.1"},
  {:poison, "~> 1.5"},
  {:httpoison, "~> 0.7.2"},
  {:ecto, "~> 1.0.4"},
  {:floki, "~> 0.5"}

目前,db的所有读取都是通过psql完成的。它做的工作,但很烦人。 :)

供参考。

  defmodule Univer do
    use Ecto.Model

    import Ecto.Query

    schema "univers" do
      field :ref, :integer
      field :name, :string
      field :legal_name, :string
      field :city, :string
      field :type, :string
      field :address, :string
      field :contacts, {:array, :string}
      field :fax, :string
      field :phones, {:array, :string}
      field :email, :string
      field :url, :string
      has_many :schools, School
      has_one :place, Place
      timestamps
    end
  end

和迁移

  defmodule Univer.Repo.Migrations.AddUniversTable do
    use Ecto.Migration

    def up do
      create table(:univers) do
        add :ref, :integer
        add :name, :text
        add :legal_name, :text
        add :type, :string
        add :fax, :string
        add :city, :string
        add :contacts, {:array, :string}
        add :address, :text
        add :phones, {:array, :string}
        add :email, :string
        add :url, :string
        timestamps
      end
    end

    def down do
      drop table(:univers)
    end
  end

1 个答案:

答案 0 :(得分:27)

我发现问题的核心是我对功能语言中古典语言魔术的期望。

详细说明:

如果要在IEX控制台(iex -S mix)中测试查询。 你必须包括

import Ecto.Query

我将它包含在模块中但不包含在IEX控制台中。 我想这很愚蠢,但值得分享。