同样,我们有不同的接口Int*,Double*,Long*对应的Function,Supplier,Predicate.
在我看来,使用这些特殊接口的唯一好处是使代码更具可读性并强制其客户端仅使用该特定类型作为输入.
但除此之外,我是否遗漏了一些其他用例?
我有以下架构.
defmodule Message do
use Ecto.Schema
schema "messages" do
belongs_to :user, FPL.Club, foreign_key: :user_to_id
belongs_to :user, FPL.Club, foreign_key: :user_from_id
end
end
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我有两个belongs_to我想在此定义的关系,对应于发送邮件的用户以及发送此邮件的用户.在消息表中,我有两个名为user_to_id和的字段user_from_id.
但是这失败了以下错误:
== Compilation error on file lib/message.ex ==
** (ArgumentError) field/association :user is already set on schema
lib/ecto/schema.ex:1697: Ecto.Schema.put_struct_field/3
lib/ecto/schema.ex:1677: Ecto.Schema.association/5
lib/ecto/schema.ex:1512: Ecto.Schema.__belongs_to__/4
lib/message.ex:12: (module)
(stdlib) erl_eval.erl:670: :erl_eval.do_apply/6
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?