3
我试图测试一个用户id是否等于使用guardian auth的资源id。如果没有当前令牌,并且我尝试访问正在检查令牌的网址,则会出现此错误function nil.id/0 is undefined or private
。我来自一个红宝石背景,我不知道它为什么说.id
是一个函数?为什么这是抛出一个错误。这里是我的代码:函数nil.id/0是未定义的或私有的 - Elixir
def index(conn, %{"user_id" => user_id}) do
user = Repo.get(User, user_id)
|> Repo.preload(:projects)
cond do
user.id == Guardian.Plug.current_resource(conn).id ->
conn
|> render("index.html", projects: user.projects, user: user)
:error ->
conn
|> put_flash(:info, "No access")
|> redirect(to: session_path(conn, :new))
end
end
如果没有current_resource,则会打印此错误。但是,如果没有current_resource,我只想让它继续:error路径并呈现会话路径。
我欣赏的帮助,我认为你是对的,但是当我改变了代码,我得到这个错误。 'web/controllers/admin/project_controller.ex:12:未定义的函数资源/ 0'。那就是当我把这行改成这个'resource == Guardian.Plug.current_resource(conn)&& user.id = resource.id' – Bitwise
对不起,忘了标记你 – Bitwise
这是'resource =',而不是'=='。 – Dogbert