小编Nan*_*usa的帖子

Phoenix控制器中的current_user通过Plug传递

将此代码示例作为Plug来处理身份验证:

defmodule Financeweb.APIAuth do
...

  def call(conn, _opts) do
  ...

    if authenticated_user do
      conn
      |> assign(:current_user, user)
    else
      conn
      |> send_resp(401, "{\"error\":\"unauthorized\"}")
      |> halt
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

所以,我通过current_user下游传递变量Plug.Conn.assign/3.在Phoenix控制器中获取此变量的最佳方法是什么?我这样做(下面的代码),但我确信有更好的方法来做到这一点.

def index(conn, _) do
  user_id = conn.assigns.current_user.id 
end
Run Code Online (Sandbox Code Playgroud)

elixir phoenix-framework

10
推荐指数
1
解决办法
1795
查看次数

基于Ecto关联查询

在Rails Controller中,您经常会看到下面的代码,以便只获取属于current_user的帖子;

class PostsController < APIController
  def show
    current_user.posts.find(params[:id])
  end
end
Run Code Online (Sandbox Code Playgroud)

使用Ecto表达这一点的最佳方式是什么?

elixir ecto phoenix-framework

6
推荐指数
1
解决办法
1746
查看次数

如何使用Ecto执行ActiveRecord的查询current_user.articles?

在Rails AR中可以运行如下查询:

current_user.articles # fetch all articles from current_user
SELECT * from articles where user_id = <user_id>;
Run Code Online (Sandbox Code Playgroud)

有一种与Ecto相同的方法吗?

elixir ecto phoenix-framework

4
推荐指数
1
解决办法
151
查看次数

CanCan用户参数始终只有ajax请求

我在我的rails应用程序中使用Cancan + Devise:

当我尝试更新评论记录时,问题就出现了,我想初始化方法的用户参数总是即将到来,nil即使我已记录:

Ability.rb

class Ability
  include CanCan::Ability


  def initialize(user)
    user ||= User.new # guest user

    unless user.nil?
      if user.role.name == "admin"
        can :manage, :all
      elsif user.role.name == "atendimento"
        can :manage, Comment
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

Better_errors 更好的错误

最后它引发了这个错误.

在此输入图像描述

每个人都面临这个问题?有人可以帮帮我吗?

Rails 3.2.8设计2.1.0 CanCan 1.6.9 Ruby 1.9.3p385

编辑1

CommentsController.rb

 class CommentsController < ApplicationController

   authorize_resource :only => [:index, :show,:new,:edit, :create,:update,:destroy,  :approve, :moderate, :disapprove]

   layout "admin"
Run Code Online (Sandbox Code Playgroud)

编辑2

嘿伙计们,CanCan在控制器收到ajax请求时工作得很好.

Comments.js

 var request = $.ajax({
   url: url_to_request,
   type: "PUT",
   data: {id : id_to_send, …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails cancan

0
推荐指数
1
解决办法
807
查看次数

标签 统计

elixir ×3

phoenix-framework ×3

ecto ×2

cancan ×1

ruby ×1

ruby-on-rails ×1