Phoenix n00b здесь.
Итак, я вошел в систему текущего пользователя (используя Coherence , но я не думаю, что это повлияет здесь):
user = Coherence.current_user(conn)
И у меня есть объект, который связан с пользователем:
object = Repo.get(Object, XX) |> Repo.preload(:user)
owner = object.user
Я просто хочу проверить, что user
совпадает с owner
.
Запись user == owner
не является правильной, потому что - я полагаю - структуры являются ссылками, поэтому они будут различаться, несмотря на то, что они являются одним и тем же объектом БД.
Запись user.id == owner.id
будет работать, нопоскольку user
может быть nil
, в этом случае произойдет сбой, в то время как равенство остается верным.
Я попытался user[:id] == owner[:id]
, поскольку это не дает сбоя, если user
ноль, но тогда, если это user
, я получаю ошибку User does not implement the Access behaviour
.: (
Письмо not is_nil(user) && user.id == owner.id
работает, но уродливо (и, слава богу, owner
также не скупо)
Думаю, яПонадобится ли здесь вспомогательная функция, но разве она не встроена? Если да, то где? В Ecto? В Coherence?
Нет ли способа переопределить структурное равенство для некоторых конкретных структур?