I just want to inspect the innards of a function. From my perspective I am simply piping data in and out without affecting it. Why does this create an error at all?
function App.Alerts.Alert.check_for_single_selection/1 is undefined or private
def check_for_single_selection(data)do
IO.inspect "view something"
data
end
def create_alert(attrs \\ %{}) do
%Alert{}
|> Alert.check_for_single_selection()
|> Alert.changeset(attrs)
|> Repo.insert()
end
The error is saying that there is no App.Alerts.Alert.check_for_single_selection/1 function. You’re showing a check_for_single_selection/1 function, what module is it in?
1 Like
I see.
I fixed it like this:
|> App.Alerts.check_for_single_selection()
For some reason I thought I could omit the App from the naming.
The full code is below
defmodule App.Alerts do
@moduledoc """
The Alerts context.
"""
import Ecto.Query, warn: false
alias App.Repo
alias App.Alerts.Alert
@doc """
Returns the list of alerts.
## Examples
iex> list_alerts()
[%Alert{}, ...]
"""
def list_alerts do
Repo.all(Alert)
end
@doc """
Gets a single alert.
Raises `Ecto.NoResultsError` if the Alert does not exist.
## Examples
iex> get_alert!(123)
%Alert{}
iex> get_alert!(456)
** (Ecto.NoResultsError)
"""
def get_alert!(id), do: Repo.get!(Alert, id)
@doc """
Creates a alert.
## Examples
iex> create_alert(%{field: value})
{:ok, %Alert{}}
iex> create_alert(%{field: bad_value})
{:error, %Ecto.Changeset{}}
"""
def check_for_single_selection(data) do
IO.inspect "view something"
data
end
def create_alert(attrs \\ %{}) do
%Alert{}
|> App.Alerts.check_for_single_selection()
|> Alert.changeset(attrs)
|> Repo.insert()
end
@doc """
Updates a alert.
## Examples
iex> update_alert(alert, %{field: new_value})
{:ok, %Alert{}}
iex> update_alert(alert, %{field: bad_value})
{:error, %Ecto.Changeset{}}
"""
def update_alert(%Alert{} = alert, attrs) do
alert
|> Alert.changeset(attrs)
|> Repo.update()
end
@doc """
Deletes a alert.
## Examples
iex> delete_alert(alert)
{:ok, %Alert{}}
iex> delete_alert(alert)
{:error, %Ecto.Changeset{}}
"""
def delete_alert(%Alert{} = alert) do
Repo.delete(alert)
end
@doc """
Returns an `%Ecto.Changeset{}` for tracking alert changes.
## Examples
iex> change_alert(alert)
%Ecto.Changeset{data: %Alert{}}
"""
def change_alert(%Alert{} = alert, attrs \\ %{}) do
Alert.changeset(alert, attrs)
end
end
Hey @wktdev in your first function the module you used was App.Alerts.Alert, but the function wasn’t in that module at all, and that doesn’t really have anything to do with leaving off the App bit.