0

我的用户可以定义自己的词汇表。

class User < ActiveRecord::Base
  has_many :vocabularies
end

class Vocabulary < ActiveRecord::Base
  belongs_to :user
end

路线:

resource :user do
  resources :vocabularies
end

现在我想使用CanCan通过加载的用户资源来加载和授权词汇资源CategoriesController,但是我很不确定如何正确配置CanCan。

一件事是我没有通过 URL 参数传递用户的 ID,所以我必须以某种方式手动告诉 CanCan 如何加载用户。我的猜测是我可以简单地做一个through: :current_user. 而且因为它是一个单例资源,我想我必须通过singleton: true选项:

class VocabulariesController < ApplicationController
  inherit_resources
  belongs_to :current_user # Is this correct?
  load_and_authorize_resource through: :current_user, singleton: true
end

但是在尝试访问时user/vocabularies,我遇到了Couldn't find Vocabulary without an ID错误。并user/vocabularies/new导致undefined method#` 的 current_user='。不知道问题出在哪里,是CanCan吗?继承资源?配置错误?

4

0 回答 0