2015-10-05 10 views
16

Bu sorunu Ecto projesiyle yaşıyorum. Sorguların hiçbiri çalışmıyor. Ben biraz googling ve github sorunları arama yaptım. Benim sorunumla ilgili olmayan ama birkaç tane var.Ecto modeli `undefined işlevi:` iex *** makro ile çalışırken ***

Bu soru (çoğunlukla sorunuma ilgili) bu bir 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 ile havaya uçurdu yola atıldı. Sadece bu model değil, diğer modeller de. Devlerim.

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

anda db okuma tüm psql aracılığıyla yapılır. Bu işi yapıyor ama sinir bozucu.

Başvuru için.

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 

cevap

26

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 

ve göç ben Sorunun özü Fonksiyonel dilinde Klasik dil büyü beklentisi içindeyim bulundu. Ayrıntılı olarak

:

Eğer IEX konsola (iex -S mix) sorguları test etmek istiyorum. Ben modülünde ancak IEX konsolunda o dahil edildi

import Ecto.Query 

Sen içermelidir. Oldukça aptal ama paylaşmaya değer, sanırım.

+4

Bu kesinlikle yaygın bir tuzak! –

+0

Böyle bazı şeyleri önyüklemenin basit bir yolu var mı? – brightball

+5

@aramisbear "import Ecto.Query" i içeren projenizin kök dizinine '.iex.exs' dosyası ekleyebilirsiniz. Daha sonra IEX'i açtığınızda bu komutu çalıştıracaktır. –