【发布时间】:2020-05-21 04:01:27
【问题描述】:
这是类型说明:
iex(1)> h Ecto.Repo.delete
No documentation for function Ecto.Repo.delete was found, but there is a callback with the same name.
You can view callback documentations with the b/1 helper.
iex(2)> b Ecto.Repo.delete
@callback delete(
struct_or_changeset ::
Ecto.Schema.t() | Ecto.Changeset.t(),
opts :: Keyword.t()
) ::
{:ok, Ecto.Schema.t()}
| {:error, Ecto.Changeset.t()}
Deletes a struct using its primary key.
If the struct has no primary key,
Ecto.NoPrimaryKeyFieldError will be raised. If the struct
has been removed from db prior to call,
Ecto.StaleEntryError will be raised.
It returns {:ok, struct} if the struct has been
successfully deleted or {:error, changeset} if there was a
validation or a known constraint error.
## Options
• :prefix - The prefix to run the query on (such as
the schema path in Postgres or the database in MySQL).
This overrides the prefix set in the query and any
@schema_prefix set in the schema.
• :stale_error_field - The field where stale errors
will be added in the returning changeset. This option
can be used to avoid raising Ecto.StaleEntryError.
• :stale_error_message - The message to add to the
configured :stale_error_field when stale errors happen,
defaults to "is stale".
See the "Shared options" section at the module
documentation.
## Example
post = MyRepo.get!(Post, 42)
case MyRepo.delete post do
{:ok, struct} -> # Deleted with success
{:error, changeset} -> # Something went wrong
end
在最后的例子中,delete() 是用一个参数调用的。而且,我可以用一个参数成功调用delete():
def delete_item(%Auction.Item{}=item) do
@repo.delete(item) #<=== HERE
end
所以,这告诉我第二个参数必须有一个默认值。有没有办法以某种方式知道这一点?
【问题讨论】: