我的用户可以定义自己的词汇表。
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吗?继承资源?配置错误?