我有一个带有 rails_admin (0.8.1)、pundit (1.1.0) 和 mongoid (5.1.4) 的 Rails 4.2.7 应用程序
我创建了 Campaign 脚手架并添加authorize @campaign
到set_campaign
CampaignController 中。当我浏览到http://localhost:3000/campaigns/57b34dd3f5740c23d3066e43我得到unable to find policy
CampaignPolicyfor <Campaign _id ...
我跑去rails g pundit:policy campaign
创建 CampaignPolicy,现在展示行动作品。但是当我浏览到 RailsAdmin http://localhost:3000/admin/campaign我得到:
undefined method `to_criteria' for Campaign:Class
lib/mongoid/criteria.rb merge! method
我通过像这样修改 CampaignPollicy 中的 Scope 来“解决”它,但我想知道是否有更好的解决方案
class CampaignPolicy < ApplicationPolicy
def show?
true
end
class Scope
attr_reader :user, :scope
def initialize(user, scope)
@user = user
@scope = scope
end
def resolve
end
end
end