首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调试cancan

调试cancan
EN

Stack Overflow用户
提问于 2011-10-24 17:09:58
回答 1查看 639关注 0票数 2

我正在尝试调试以下块。

代码语言:javascript
复制
  can :create, Todo do |todo|
    todo.user.account == user.account
  end

我在TodosController的顶部使用TodosController

的问题是,在执行:create操作时,'account‘是上面的todo.user.account的一个零方法。todo对象在传递时似乎没有被完全实例化;我不知道如何控制这个对象。

以下是TodosController的相关部分:

代码语言:javascript
复制
  def new
    #@todo = Todo.new
    @todo = current_user.todos.build
    respond_to do |format|
      format.html # new.html.erb
      format.json { render :json => @todo }
    end
  end

  def create
    #@todo = Todo.new(params[:todo])

    #Build the @todo object including the relations of who's made this todo.
    @todo = current_user.todos.build(params[:todo])
    @todo.subscriptions.build(:user => current_user, :todo => @todo)
    @todo.subscriptions.build(:user => @todo.assignee, :todo => @todo)
    respond_to do |format|
      if @todo.save
        #format.html { redirect_to @todo, :notice => 'Todo was successfully created.' }
        Notifier.notify_assignee(@todo,current_user).deliver
        format.html { redirect_to :back }
        format.json { render :json => @todo, :status => :created, :location => @todo }
      else
        format.html { render :action => "new" }
        format.json { render :json => @todo.errors, :status => :unprocessable_entity }
      end
    end
  end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-14 00:26:10

代码语言:javascript
复制
load_and_authorize_resource :except => :create

然后:

代码语言:javascript
复制
def create
  #@todo = Todo.new(params[:todo])

  #Build the @todo object including the relations of who's made this todo.
  @todo = current_user.todos.build(params[:todo])
  authorize! :create, @todo
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7879221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档