我正在使用CanCan的load_and_authorize_resource
来获取current_user
可访问的商家实例。我的数据模型如下:
应用/模型/ user.rb
class User < ActiveRecord::Base
has_and_belongs_to_many :merchants
end
应用/模型/ merchant.rb
class Merchant < ActiveRecord::Base
has_and_belongs_to_many :users
end
应用/模型/ ability.rb
class Ability
....
can [:read, :update], Merchant, users: { id: user.id }
end
应用/控制器/ merchants_controller.rb
class MerchantsController < ApplicationController
load_and_authorize_resource
skip_load_resource only: [:create]
def index
end
def show
end
end
我遇到的问题是索引操作会正确加载相应的商家。但是,当执行show动作(并尝试授权单个商家时,我收到以下错误:
undefined method 'id' for #<User::ActiveRecord_Associations_CollectionProxy:0x00000007a23800>
我为访问商家定义的CanCan规则是否适用于列出商家集合并显示个别商家?我需要一个单独的规则吗?我有点难过。