2017-11-19 3 views
0

私は両方のクエリが満たされたときに結果を返すectoクエリを作成しようとしています。私はアプリを実行すると、私はエラーfunction nil.title/0 is undefined or privateを取得します。私は質問の権利がないので、これはですか?私は2つのANDを求めています。ectoのどこでクエリを組み合わせる

def next_prod do 
    Post |> where(postStatus: "published") |> where(next_prod: "yes") |> Repo.one() 
end 

あなたはエクトクエリと一致する必要がありますレコードが存在する表示されますSQLクエリ

iex(1)> Codsonline.Repo.query("SELECT * FROM posts") 
[debug] QUERY OK db=3.0ms queue=0.1ms 
SELECT * FROM posts [] 
{:ok, 
%Postgrex.Result{columns: ["id", "title", "snippet", "body", "slug", "mainImg", 
    "thumbImg", "postStatus", "showStatus", "inserted_at", "updated_at", 
    "next_prod"], command: :select, connection_id: 13732, num_rows: 1, 
    rows: [[8, "Blackadder Goes Forth", 
    "“Blackadder Goes Forth ” is the fourth and final part of the Blackadder series . A theatrical Dramatisation inspired by the TV episodes. Follow the Wit and Sarcasm of Captain BlackAdder in Oscar Wilde language.", 
    "27th January – 03rd February 2018\r\nPlayhouse Theatre, Cheltenham\r\n\r\n \r\n\r\nEpisodes:\r\n‘Corporal Punishment‘ (Episode 2)\r\n‘Private Plane‘ (Episode 4)\r\n‘Goodbyeee‘ (Episode 6)\r\n\r\nDirected by Nick Tobias & Liz White\r\n\r\n \r\n\r\nCast List:\r\n\r\nCaptain Edmund Blackadder – Chris Hannant\r\nPrivate S Baldrick – Matt Wilson\r\nLt. Hon. George Colthurst St Barleigh – UNCAST\r\nGeneral Sir Anthony Cecil Hogmanay Melchett – Jason Blackburn\r\nCaptain Kevin Darling – Jack Homer\r\nSquadron Commander the Lord Flashheart – Michael Fay\r\nField Marshall Sir Douglas Haig – Will Browne\r\nBaron Von Richthoven – Robert Barton-Ancliffe\r\nBob ‘Bobbie’ Parkhurst – Sarah Bottomley\r\n\r\nEnsemble – Ben Wilson (Sergeant Jones), Oliver Chapman (Gerhardt), Michael Sheldrick (Perkins), Steve Scott, Matthew Morris", 
    "blackadder-goes-forth", ".", ".", "published", "Future", 
    {{2017, 11, 18}, {22, 36, 19, 408441}}, 
    {{2017, 11, 18}, {23, 3, 42, 816258}}, "Yes"]]}} 
+0

あなたは '' next_prodは=「はい」AND next_prod =「no」をしたいですか?それは何にもマッチしません。あなたの構文は正しいbtwです。そのエラーは他のどこかから来ています。 – Dogbert

+0

haコピーの貼り付けエラーです。 OPの文字列を修正しました –

答えて

1

このエラーはこのコード行ではありません。あなたのコードは正常で、2つの節はEctoによってANDされます。エラーは、nil.titleにどこかで電話しようとしたことを意味します。

iex(1)> nil.title 
** (UndefinedFunctionError) function nil.title/0 is undefined or private 
    nil.title() 

私はあなたがこの関数の戻り値に.titleと呼ば推測している、あなたが実際にデータベースにこれら二つの条件に一致するレコードを持っていません。レコードが存在することを確認する場合は、Repo.one!を使用する必要があります。それとも、レコードが存在しないケースを処理したい場合は、ifを使用します。

if record = Thing.next_prod do 
    # record exists 
else 
    # it doesn't 
end 
+0

'posts = Blog.list_posts()'のインデックスに記録されているように、レコードが存在していることを確認していますが、どちらの句にも当てはまるレコードを見ることができます。 –

+0

質問にこの関数を実行すると、そのコマンドの出力と取得したSQLクエリをログに追加できますか? – Dogbert

+0

私はOP –

関連する問題